{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<i>Copyright (c) Microsoft Corporation. All rights reserved.</i>\n",
    "\n",
    "<i>Licensed under the MIT License.</i>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Testing different Hyperparameters and Benchmarking"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In this notebook, we'll cover how to test different hyperparameters for a particular dataset and how to benchmark different parameters across a group of datasets. Note that this re-uses functionality which was already introduced and described in the [classification/notebooks/11_exploring_hyperparameters.ipynb](../../classification/notebooks/11_exploring_hyperparameters.ipynb) notebook. **Please refer to that notebook for all explanations, which this notebook will not repeat.**\n",
    "\n",
    "For an example of how to scale up with remote GPU clusters on Azure Machine Learning, please view [24_exploring_hyperparameters_on_azureml.ipynb](../../classification/notebooks/24_exploring_hyperparameters_on_azureml.ipynb)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Testing hyperparameters"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Ensure edits to libraries are loaded and plotting is shown in the notebook."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "%reload_ext autoreload\n",
    "%autoreload 2\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We start by importing the utilities we need."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'1.0.57'"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import sys\n",
    "import numpy as np\n",
    "import scrapbook as sb\n",
    "import torch\n",
    "import fastai\n",
    "from fastai.vision import *\n",
    "\n",
    "sys.path.append(\"../../\")\n",
    "from utils_cv.common.data import unzip_url\n",
    "from utils_cv.classification.parameter_sweeper import ParameterSweeper, clean_sweeper_df, plot_sweeper_df\n",
    "from utils_cv.segmentation.data import Urls\n",
    "\n",
    "fastai.__version__"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Define the datasets and parameters we will use in this notebook. To run this notebook quickly, we are setting the image resolution and the number of epochs to be low. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "tags": [
     "parameters"
    ]
   },
   "outputs": [],
   "source": [
    "DATA_PATHS = [unzip_url(Urls.fridge_objects_path, exist_ok=True)]\n",
    "REPS = 3\n",
    "LEARNING_RATES = [1e-3, 1e-4, 1e-5]\n",
    "IM_SIZES = [50, 100]   #recommended to try: [300, 500]\n",
    "EPOCHS = [2,5]         #recommended to try: [10, 20]\n",
    "DROPOUTS = [0]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Model training and evaluation"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We start by creating the Parameter Sweeper object. Before we start testing, it's a good idea to see what the default parameters are. We can use a the property `parameters` to easily see those default values."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "OrderedDict([('learning_rate', [0.0001]),\n",
       "             ('epochs', [15]),\n",
       "             ('batch_size', [16]),\n",
       "             ('im_size', [299]),\n",
       "             ('architecture',\n",
       "              [<Architecture.resnet18: functools.partial(<function resnet18 at 0x0000020D0486F8B8>)>]),\n",
       "             ('transform', [True]),\n",
       "             ('dropout', [0.5]),\n",
       "             ('weight_decay', [0.01]),\n",
       "             ('training_schedule',\n",
       "              [<TrainingSchedule.head_first_then_body: 'head_first_then_body'>]),\n",
       "             ('discriminative_lr', [False]),\n",
       "             ('one_cycle_policy', [True])])"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sweeper = ParameterSweeper(metric_name=\"ratio_correct\")\n",
    "sweeper.parameters"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now that we know the defaults, we can pass it the parameters we want to test, and run the parameter sweep."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sweeper.update_parameters(learning_rate=LEARNING_RATES, im_size=IM_SIZES, epochs=EPOCHS, dropout=DROPOUTS)\n",
    "df = sweeper.run(datasets=DATA_PATHS, reps=REPS, learner_type = \"unet\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>duration</th>\n",
       "      <th>ratio_correct</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"12\" valign=\"top\">0</th>\n",
       "      <th>P: [learning_rate: 0.001] [epochs: 2] [im_size: 50]</th>\n",
       "      <th>segFridgeObjects</th>\n",
       "      <td>14.420340</td>\n",
       "      <td>0.755381</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P: [learning_rate: 0.001] [epochs: 2] [im_size: 100]</th>\n",
       "      <th>segFridgeObjects</th>\n",
       "      <td>16.193594</td>\n",
       "      <td>0.762260</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P: [learning_rate: 0.001] [epochs: 5] [im_size: 50]</th>\n",
       "      <th>segFridgeObjects</th>\n",
       "      <td>15.623636</td>\n",
       "      <td>0.872600</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P: [learning_rate: 0.001] [epochs: 5] [im_size: 100]</th>\n",
       "      <th>segFridgeObjects</th>\n",
       "      <td>22.343675</td>\n",
       "      <td>0.887317</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P: [learning_rate: 0.0001] [epochs: 2] [im_size: 50]</th>\n",
       "      <th>segFridgeObjects</th>\n",
       "      <td>6.899916</td>\n",
       "      <td>0.751771</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P: [learning_rate: 0.0001] [epochs: 2] [im_size: 100]</th>\n",
       "      <th>segFridgeObjects</th>\n",
       "      <td>9.796095</td>\n",
       "      <td>0.710405</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P: [learning_rate: 0.0001] [epochs: 5] [im_size: 50]</th>\n",
       "      <th>segFridgeObjects</th>\n",
       "      <td>15.502939</td>\n",
       "      <td>0.795143</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P: [learning_rate: 0.0001] [epochs: 5] [im_size: 100]</th>\n",
       "      <th>segFridgeObjects</th>\n",
       "      <td>22.566672</td>\n",
       "      <td>0.857043</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P: [learning_rate: 1e-05] [epochs: 2] [im_size: 50]</th>\n",
       "      <th>segFridgeObjects</th>\n",
       "      <td>6.870908</td>\n",
       "      <td>0.617076</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P: [learning_rate: 1e-05] [epochs: 2] [im_size: 100]</th>\n",
       "      <th>segFridgeObjects</th>\n",
       "      <td>9.799436</td>\n",
       "      <td>0.702471</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P: [learning_rate: 1e-05] [epochs: 5] [im_size: 50]</th>\n",
       "      <th>segFridgeObjects</th>\n",
       "      <td>15.424780</td>\n",
       "      <td>0.068190</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P: [learning_rate: 1e-05] [epochs: 5] [im_size: 100]</th>\n",
       "      <th>segFridgeObjects</th>\n",
       "      <td>22.426835</td>\n",
       "      <td>0.666171</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"12\" valign=\"top\">1</th>\n",
       "      <th>P: [learning_rate: 0.001] [epochs: 2] [im_size: 50]</th>\n",
       "      <th>segFridgeObjects</th>\n",
       "      <td>6.887019</td>\n",
       "      <td>0.765638</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P: [learning_rate: 0.001] [epochs: 2] [im_size: 100]</th>\n",
       "      <th>segFridgeObjects</th>\n",
       "      <td>9.731006</td>\n",
       "      <td>0.764333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P: [learning_rate: 0.001] [epochs: 5] [im_size: 50]</th>\n",
       "      <th>segFridgeObjects</th>\n",
       "      <td>15.412147</td>\n",
       "      <td>0.872752</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P: [learning_rate: 0.001] [epochs: 5] [im_size: 100]</th>\n",
       "      <th>segFridgeObjects</th>\n",
       "      <td>22.588943</td>\n",
       "      <td>0.871452</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P: [learning_rate: 0.0001] [epochs: 2] [im_size: 50]</th>\n",
       "      <th>segFridgeObjects</th>\n",
       "      <td>6.957915</td>\n",
       "      <td>0.796476</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P: [learning_rate: 0.0001] [epochs: 2] [im_size: 100]</th>\n",
       "      <th>segFridgeObjects</th>\n",
       "      <td>9.775615</td>\n",
       "      <td>0.758117</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P: [learning_rate: 0.0001] [epochs: 5] [im_size: 50]</th>\n",
       "      <th>segFridgeObjects</th>\n",
       "      <td>15.372692</td>\n",
       "      <td>0.803791</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P: [learning_rate: 0.0001] [epochs: 5] [im_size: 100]</th>\n",
       "      <th>segFridgeObjects</th>\n",
       "      <td>22.460565</td>\n",
       "      <td>0.828309</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P: [learning_rate: 1e-05] [epochs: 2] [im_size: 50]</th>\n",
       "      <th>segFridgeObjects</th>\n",
       "      <td>6.891902</td>\n",
       "      <td>0.130438</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P: [learning_rate: 1e-05] [epochs: 2] [im_size: 100]</th>\n",
       "      <th>segFridgeObjects</th>\n",
       "      <td>9.807517</td>\n",
       "      <td>0.062869</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P: [learning_rate: 1e-05] [epochs: 5] [im_size: 50]</th>\n",
       "      <th>segFridgeObjects</th>\n",
       "      <td>15.543634</td>\n",
       "      <td>0.718600</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P: [learning_rate: 1e-05] [epochs: 5] [im_size: 100]</th>\n",
       "      <th>segFridgeObjects</th>\n",
       "      <td>22.575260</td>\n",
       "      <td>0.678021</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"12\" valign=\"top\">2</th>\n",
       "      <th>P: [learning_rate: 0.001] [epochs: 2] [im_size: 50]</th>\n",
       "      <th>segFridgeObjects</th>\n",
       "      <td>6.887870</td>\n",
       "      <td>0.800133</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P: [learning_rate: 0.001] [epochs: 2] [im_size: 100]</th>\n",
       "      <th>segFridgeObjects</th>\n",
       "      <td>9.745823</td>\n",
       "      <td>0.749898</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P: [learning_rate: 0.001] [epochs: 5] [im_size: 50]</th>\n",
       "      <th>segFridgeObjects</th>\n",
       "      <td>15.492912</td>\n",
       "      <td>0.878714</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P: [learning_rate: 0.001] [epochs: 5] [im_size: 100]</th>\n",
       "      <th>segFridgeObjects</th>\n",
       "      <td>22.516315</td>\n",
       "      <td>0.893729</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P: [learning_rate: 0.0001] [epochs: 2] [im_size: 50]</th>\n",
       "      <th>segFridgeObjects</th>\n",
       "      <td>6.909174</td>\n",
       "      <td>0.705686</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P: [learning_rate: 0.0001] [epochs: 2] [im_size: 100]</th>\n",
       "      <th>segFridgeObjects</th>\n",
       "      <td>9.824869</td>\n",
       "      <td>0.748552</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P: [learning_rate: 0.0001] [epochs: 5] [im_size: 50]</th>\n",
       "      <th>segFridgeObjects</th>\n",
       "      <td>15.418286</td>\n",
       "      <td>0.804457</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P: [learning_rate: 0.0001] [epochs: 5] [im_size: 100]</th>\n",
       "      <th>segFridgeObjects</th>\n",
       "      <td>22.506616</td>\n",
       "      <td>0.855628</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P: [learning_rate: 1e-05] [epochs: 2] [im_size: 50]</th>\n",
       "      <th>segFridgeObjects</th>\n",
       "      <td>6.880254</td>\n",
       "      <td>0.306324</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P: [learning_rate: 1e-05] [epochs: 2] [im_size: 100]</th>\n",
       "      <th>segFridgeObjects</th>\n",
       "      <td>9.756700</td>\n",
       "      <td>0.454471</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P: [learning_rate: 1e-05] [epochs: 5] [im_size: 50]</th>\n",
       "      <th>segFridgeObjects</th>\n",
       "      <td>15.497649</td>\n",
       "      <td>0.321914</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P: [learning_rate: 1e-05] [epochs: 5] [im_size: 100]</th>\n",
       "      <th>segFridgeObjects</th>\n",
       "      <td>22.555554</td>\n",
       "      <td>0.760231</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                                        duration  \\\n",
       "0 P: [learning_rate: 0.001] [epochs: 2] [im_size:... segFridgeObjects  14.420340   \n",
       "  P: [learning_rate: 0.001] [epochs: 2] [im_size:... segFridgeObjects  16.193594   \n",
       "  P: [learning_rate: 0.001] [epochs: 5] [im_size:... segFridgeObjects  15.623636   \n",
       "  P: [learning_rate: 0.001] [epochs: 5] [im_size:... segFridgeObjects  22.343675   \n",
       "  P: [learning_rate: 0.0001] [epochs: 2] [im_size... segFridgeObjects   6.899916   \n",
       "  P: [learning_rate: 0.0001] [epochs: 2] [im_size... segFridgeObjects   9.796095   \n",
       "  P: [learning_rate: 0.0001] [epochs: 5] [im_size... segFridgeObjects  15.502939   \n",
       "  P: [learning_rate: 0.0001] [epochs: 5] [im_size... segFridgeObjects  22.566672   \n",
       "  P: [learning_rate: 1e-05] [epochs: 2] [im_size:... segFridgeObjects   6.870908   \n",
       "  P: [learning_rate: 1e-05] [epochs: 2] [im_size:... segFridgeObjects   9.799436   \n",
       "  P: [learning_rate: 1e-05] [epochs: 5] [im_size:... segFridgeObjects  15.424780   \n",
       "  P: [learning_rate: 1e-05] [epochs: 5] [im_size:... segFridgeObjects  22.426835   \n",
       "1 P: [learning_rate: 0.001] [epochs: 2] [im_size:... segFridgeObjects   6.887019   \n",
       "  P: [learning_rate: 0.001] [epochs: 2] [im_size:... segFridgeObjects   9.731006   \n",
       "  P: [learning_rate: 0.001] [epochs: 5] [im_size:... segFridgeObjects  15.412147   \n",
       "  P: [learning_rate: 0.001] [epochs: 5] [im_size:... segFridgeObjects  22.588943   \n",
       "  P: [learning_rate: 0.0001] [epochs: 2] [im_size... segFridgeObjects   6.957915   \n",
       "  P: [learning_rate: 0.0001] [epochs: 2] [im_size... segFridgeObjects   9.775615   \n",
       "  P: [learning_rate: 0.0001] [epochs: 5] [im_size... segFridgeObjects  15.372692   \n",
       "  P: [learning_rate: 0.0001] [epochs: 5] [im_size... segFridgeObjects  22.460565   \n",
       "  P: [learning_rate: 1e-05] [epochs: 2] [im_size:... segFridgeObjects   6.891902   \n",
       "  P: [learning_rate: 1e-05] [epochs: 2] [im_size:... segFridgeObjects   9.807517   \n",
       "  P: [learning_rate: 1e-05] [epochs: 5] [im_size:... segFridgeObjects  15.543634   \n",
       "  P: [learning_rate: 1e-05] [epochs: 5] [im_size:... segFridgeObjects  22.575260   \n",
       "2 P: [learning_rate: 0.001] [epochs: 2] [im_size:... segFridgeObjects   6.887870   \n",
       "  P: [learning_rate: 0.001] [epochs: 2] [im_size:... segFridgeObjects   9.745823   \n",
       "  P: [learning_rate: 0.001] [epochs: 5] [im_size:... segFridgeObjects  15.492912   \n",
       "  P: [learning_rate: 0.001] [epochs: 5] [im_size:... segFridgeObjects  22.516315   \n",
       "  P: [learning_rate: 0.0001] [epochs: 2] [im_size... segFridgeObjects   6.909174   \n",
       "  P: [learning_rate: 0.0001] [epochs: 2] [im_size... segFridgeObjects   9.824869   \n",
       "  P: [learning_rate: 0.0001] [epochs: 5] [im_size... segFridgeObjects  15.418286   \n",
       "  P: [learning_rate: 0.0001] [epochs: 5] [im_size... segFridgeObjects  22.506616   \n",
       "  P: [learning_rate: 1e-05] [epochs: 2] [im_size:... segFridgeObjects   6.880254   \n",
       "  P: [learning_rate: 1e-05] [epochs: 2] [im_size:... segFridgeObjects   9.756700   \n",
       "  P: [learning_rate: 1e-05] [epochs: 5] [im_size:... segFridgeObjects  15.497649   \n",
       "  P: [learning_rate: 1e-05] [epochs: 5] [im_size:... segFridgeObjects  22.555554   \n",
       "\n",
       "                                                                       ratio_correct  \n",
       "0 P: [learning_rate: 0.001] [epochs: 2] [im_size:... segFridgeObjects       0.755381  \n",
       "  P: [learning_rate: 0.001] [epochs: 2] [im_size:... segFridgeObjects       0.762260  \n",
       "  P: [learning_rate: 0.001] [epochs: 5] [im_size:... segFridgeObjects       0.872600  \n",
       "  P: [learning_rate: 0.001] [epochs: 5] [im_size:... segFridgeObjects       0.887317  \n",
       "  P: [learning_rate: 0.0001] [epochs: 2] [im_size... segFridgeObjects       0.751771  \n",
       "  P: [learning_rate: 0.0001] [epochs: 2] [im_size... segFridgeObjects       0.710405  \n",
       "  P: [learning_rate: 0.0001] [epochs: 5] [im_size... segFridgeObjects       0.795143  \n",
       "  P: [learning_rate: 0.0001] [epochs: 5] [im_size... segFridgeObjects       0.857043  \n",
       "  P: [learning_rate: 1e-05] [epochs: 2] [im_size:... segFridgeObjects       0.617076  \n",
       "  P: [learning_rate: 1e-05] [epochs: 2] [im_size:... segFridgeObjects       0.702471  \n",
       "  P: [learning_rate: 1e-05] [epochs: 5] [im_size:... segFridgeObjects       0.068190  \n",
       "  P: [learning_rate: 1e-05] [epochs: 5] [im_size:... segFridgeObjects       0.666171  \n",
       "1 P: [learning_rate: 0.001] [epochs: 2] [im_size:... segFridgeObjects       0.765638  \n",
       "  P: [learning_rate: 0.001] [epochs: 2] [im_size:... segFridgeObjects       0.764333  \n",
       "  P: [learning_rate: 0.001] [epochs: 5] [im_size:... segFridgeObjects       0.872752  \n",
       "  P: [learning_rate: 0.001] [epochs: 5] [im_size:... segFridgeObjects       0.871452  \n",
       "  P: [learning_rate: 0.0001] [epochs: 2] [im_size... segFridgeObjects       0.796476  \n",
       "  P: [learning_rate: 0.0001] [epochs: 2] [im_size... segFridgeObjects       0.758117  \n",
       "  P: [learning_rate: 0.0001] [epochs: 5] [im_size... segFridgeObjects       0.803791  \n",
       "  P: [learning_rate: 0.0001] [epochs: 5] [im_size... segFridgeObjects       0.828309  \n",
       "  P: [learning_rate: 1e-05] [epochs: 2] [im_size:... segFridgeObjects       0.130438  \n",
       "  P: [learning_rate: 1e-05] [epochs: 2] [im_size:... segFridgeObjects       0.062869  \n",
       "  P: [learning_rate: 1e-05] [epochs: 5] [im_size:... segFridgeObjects       0.718600  \n",
       "  P: [learning_rate: 1e-05] [epochs: 5] [im_size:... segFridgeObjects       0.678021  \n",
       "2 P: [learning_rate: 0.001] [epochs: 2] [im_size:... segFridgeObjects       0.800133  \n",
       "  P: [learning_rate: 0.001] [epochs: 2] [im_size:... segFridgeObjects       0.749898  \n",
       "  P: [learning_rate: 0.001] [epochs: 5] [im_size:... segFridgeObjects       0.878714  \n",
       "  P: [learning_rate: 0.001] [epochs: 5] [im_size:... segFridgeObjects       0.893729  \n",
       "  P: [learning_rate: 0.0001] [epochs: 2] [im_size... segFridgeObjects       0.705686  \n",
       "  P: [learning_rate: 0.0001] [epochs: 2] [im_size... segFridgeObjects       0.748552  \n",
       "  P: [learning_rate: 0.0001] [epochs: 5] [im_size... segFridgeObjects       0.804457  \n",
       "  P: [learning_rate: 0.0001] [epochs: 5] [im_size... segFridgeObjects       0.855628  \n",
       "  P: [learning_rate: 1e-05] [epochs: 2] [im_size:... segFridgeObjects       0.306324  \n",
       "  P: [learning_rate: 1e-05] [epochs: 2] [im_size:... segFridgeObjects       0.454471  \n",
       "  P: [learning_rate: 1e-05] [epochs: 5] [im_size:... segFridgeObjects       0.321914  \n",
       "  P: [learning_rate: 1e-05] [epochs: 5] [im_size:... segFridgeObjects       0.760231  "
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Visualize Results <a name=\"visualize\"></a>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "When we read in multi-index dataframe, index 0 represents the run number, index 1 represents a single permutation of parameters, and index 2 represents the dataset. To see the results, show the df using the `clean_sweeper_df` helper function. This will display all the hyperparameters in a nice, readable way."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "df = clean_sweeper_df(df)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Since we've run our benchmarking over 3 repetitions, we may want to just look at the averages across the different __run numbers__."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead tr th {\n",
       "        text-align: left;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th>P: [learning_rate: 0.001] [epochs: 2] [im_size: 50]</th>\n",
       "      <th>P: [learning_rate: 0.001] [epochs: 2] [im_size: 100]</th>\n",
       "      <th>P: [learning_rate: 0.001] [epochs: 5] [im_size: 50]</th>\n",
       "      <th>P: [learning_rate: 0.001] [epochs: 5] [im_size: 100]</th>\n",
       "      <th>P: [learning_rate: 0.0001] [epochs: 2] [im_size: 50]</th>\n",
       "      <th>P: [learning_rate: 0.0001] [epochs: 2] [im_size: 100]</th>\n",
       "      <th>P: [learning_rate: 0.0001] [epochs: 5] [im_size: 50]</th>\n",
       "      <th>P: [learning_rate: 0.0001] [epochs: 5] [im_size: 100]</th>\n",
       "      <th>P: [learning_rate: 1e-05] [epochs: 2] [im_size: 50]</th>\n",
       "      <th>P: [learning_rate: 1e-05] [epochs: 2] [im_size: 100]</th>\n",
       "      <th>P: [learning_rate: 1e-05] [epochs: 5] [im_size: 50]</th>\n",
       "      <th>P: [learning_rate: 1e-05] [epochs: 5] [im_size: 100]</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th>segFridgeObjects</th>\n",
       "      <th>segFridgeObjects</th>\n",
       "      <th>segFridgeObjects</th>\n",
       "      <th>segFridgeObjects</th>\n",
       "      <th>segFridgeObjects</th>\n",
       "      <th>segFridgeObjects</th>\n",
       "      <th>segFridgeObjects</th>\n",
       "      <th>segFridgeObjects</th>\n",
       "      <th>segFridgeObjects</th>\n",
       "      <th>segFridgeObjects</th>\n",
       "      <th>segFridgeObjects</th>\n",
       "      <th>segFridgeObjects</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>duration</th>\n",
       "      <td>9.398410</td>\n",
       "      <td>11.890141</td>\n",
       "      <td>15.509565</td>\n",
       "      <td>22.482978</td>\n",
       "      <td>6.922335</td>\n",
       "      <td>9.798860</td>\n",
       "      <td>15.431306</td>\n",
       "      <td>22.511284</td>\n",
       "      <td>6.881021</td>\n",
       "      <td>9.787884</td>\n",
       "      <td>15.488688</td>\n",
       "      <td>22.519216</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ratio_correct</th>\n",
       "      <td>0.773717</td>\n",
       "      <td>0.758830</td>\n",
       "      <td>0.874689</td>\n",
       "      <td>0.884166</td>\n",
       "      <td>0.751311</td>\n",
       "      <td>0.739025</td>\n",
       "      <td>0.801130</td>\n",
       "      <td>0.846993</td>\n",
       "      <td>0.351279</td>\n",
       "      <td>0.406604</td>\n",
       "      <td>0.369568</td>\n",
       "      <td>0.701474</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "              P: [learning_rate: 0.001] [epochs: 2] [im_size: 50]  \\\n",
       "                                                 segFridgeObjects   \n",
       "duration                                                9.398410    \n",
       "ratio_correct                                           0.773717    \n",
       "\n",
       "              P: [learning_rate: 0.001] [epochs: 2] [im_size: 100]  \\\n",
       "                                                  segFridgeObjects   \n",
       "duration                                               11.890141     \n",
       "ratio_correct                                           0.758830     \n",
       "\n",
       "              P: [learning_rate: 0.001] [epochs: 5] [im_size: 50]  \\\n",
       "                                                 segFridgeObjects   \n",
       "duration                                               15.509565    \n",
       "ratio_correct                                           0.874689    \n",
       "\n",
       "              P: [learning_rate: 0.001] [epochs: 5] [im_size: 100]  \\\n",
       "                                                  segFridgeObjects   \n",
       "duration                                               22.482978     \n",
       "ratio_correct                                           0.884166     \n",
       "\n",
       "              P: [learning_rate: 0.0001] [epochs: 2] [im_size: 50]  \\\n",
       "                                                  segFridgeObjects   \n",
       "duration                                                6.922335     \n",
       "ratio_correct                                           0.751311     \n",
       "\n",
       "              P: [learning_rate: 0.0001] [epochs: 2] [im_size: 100]  \\\n",
       "                                                   segFridgeObjects   \n",
       "duration                                                9.798860      \n",
       "ratio_correct                                           0.739025      \n",
       "\n",
       "              P: [learning_rate: 0.0001] [epochs: 5] [im_size: 50]  \\\n",
       "                                                  segFridgeObjects   \n",
       "duration                                               15.431306     \n",
       "ratio_correct                                           0.801130     \n",
       "\n",
       "              P: [learning_rate: 0.0001] [epochs: 5] [im_size: 100]  \\\n",
       "                                                   segFridgeObjects   \n",
       "duration                                               22.511284      \n",
       "ratio_correct                                           0.846993      \n",
       "\n",
       "              P: [learning_rate: 1e-05] [epochs: 2] [im_size: 50]  \\\n",
       "                                                 segFridgeObjects   \n",
       "duration                                                6.881021    \n",
       "ratio_correct                                           0.351279    \n",
       "\n",
       "              P: [learning_rate: 1e-05] [epochs: 2] [im_size: 100]  \\\n",
       "                                                  segFridgeObjects   \n",
       "duration                                                9.787884     \n",
       "ratio_correct                                           0.406604     \n",
       "\n",
       "              P: [learning_rate: 1e-05] [epochs: 5] [im_size: 50]  \\\n",
       "                                                 segFridgeObjects   \n",
       "duration                                               15.488688    \n",
       "ratio_correct                                           0.369568    \n",
       "\n",
       "              P: [learning_rate: 1e-05] [epochs: 5] [im_size: 100]  \n",
       "                                                  segFridgeObjects  \n",
       "duration                                               22.519216    \n",
       "ratio_correct                                           0.701474    "
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.mean(level=(1,2)).T"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Print the average accuracy over the different runs for each dataset independently."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAsIAAAJfCAYAAAB16rBEAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nOzdeZRdZZX38e8mCYYxMsQGiRhAUEAhYARRbEBGlUFRBhEnbO1WGdR+abBVRJRu1HZAGwdaFBRtJqc0oNCgqAgqCTIFRBCwiWAbEQShIwH2+8e9FSpFTaHOrXPPc76ftbJS99yTqn3XL6nsOvfZz4nMRJIkSWqbleouQJIkSaqDjbAkSZJayUZYkiRJrWQjLEmSpFayEZYkSVIr2QhLkiSplabW9YXXXXfdnD17dl1fXpIkSS2xYMGCP2bmzKHHa2uEZ8+ezfz58+v68pIkSWqJiPjtcMddGiFJkqRWshGWJElSK9kIS5IkqZVqWyMsSZI0WZYuXcqiRYtYsmRJ3aWoh6ZPn86sWbOYNm3auM63EZYkScVbtGgRa6yxBrNnzyYi6i5HPZCZ3HPPPSxatIiNNtpoXH/GpRGSJKl4S5YsYZ111rEJLlhEsM4666zQVX8bYUmS1Ao2weVb0YxthCVJkhrgsssuY8aMGcyZM4c5c+aw2267DXvevHnzOOmkk4Z9bvXVV3/SXz8z+chHPsKmm27KZpttxi677MLChQvH/NzHHXccl1xyyQp/vTvuuINvfOMbT7re8XCNsCRJap3Zx15Q6ee746RXVPr5RvKSl7yE888/f8TnH3nkEfbdd1/23Xffyr/2KaecwhVXXMG1117LqquuysUXX8y+++7LwoULmT59+oh/7oQTTnhSX2+gET7kkEOebMlj8oqwJElSjz344IO84hWvYOutt+a5z30uZ599NgsWLGCnnXbi+c9/PnvuuSd33303AFdddRVbbbUVO+ywA0cffTTPfe5zR/3cb3rTm3jPe97DLrvswjHHHMPpp5/O4YcfDsDtt9/ODjvswAte8AI+8IEPLPszjz32GO94xzvYcsst2XvvvXn5y1/OeeedBzBiXR/96Ef57Gc/y6qrrgrAHnvswYte9CK+/vWvL/u8//iP/8i2227LrrvuyuLFi5fVN9bnvvXWW9ltt93Yeuut2XbbbfnNb37Dsccey09+8hPmzJnDpz71KRYuXMh2223HnDlz2GqrrbjlllsmnIuNsCRJUo99//vf5+lPfzrXXnstN9xwA3vttRdHHHEE5513HgsWLOCwww7jfe97HwBvfvOb+cIXvsCVV17JlClTlvs8A43hnDlzOPHEE5cd//Wvf80ll1zCJz7xieXOP+qoo3j729/OVVddxXrrrbfs+Le+9S3uuOMOrr/+er70pS9x5ZVXAp1t5oar6/777+fBBx9kk002We7zz507d9nyiAcffJBtt92Wq6++mp122okPfehDy5070ucGeN3rXsc73/lOrr32Wq644grWX399TjrpJF7ykpdwzTXX8O53v5svfOELHHXUUVxzzTXMnz+fWbNmTSQSwKURkiRJPfe85z2P//f//h/HHHMMe++9N2uttRY33HADu+++OwCPPvoo66+/Pvfddx8PPPAAL3rRiwA45JBDllsKMdLSiAMOOOAJTTPAT3/6U775zW8C8PrXv55jjjkGgMsvv5wDDjiAlVZaifXWW49ddtkFgJtvvnnYukaSmcsG1FZaaSUOOuggAA499FD233//5c4d6XM/8MAD/O53v+NVr3oVwIjLLHbYYQdOPPFEFi1axP7778+mm246Yl3jZSMsSZLUY5ttthkLFizgwgsv5L3vfS+77747W2655bIrsQPuvffeJ/X5V1tttRGfG24nhcwc9tzMHLauga9x2223sfHGGy87NnD1dzxfd6TPff/9949Y+2CHHHII22+/PRdccAF77rknX/rSl3jpS186rj87EhthSWqBqgeDxjJZg0NSU9x1112svfbaHHrooay++uqceuqpLF68mCuvvJIddtiBpUuX8utf/5ott9ySNdZYg5/97Ge88IUv5KyzzprQ133xi1/MWWedxaGHHrrcWt4dd9yRM844gze+8Y0sXryYyy67jEMOOYRnP/vZI9Z19NFHc+SRR3LuueeyyiqrcMkll3D55ZfzxS9+EeisOz7vvPM4+OCD+cY3vsGOO+64XC2jfe5Zs2bxne98h1e+8pX89a9/5dFHH2WNNdbggQceWPbnB5rwI488kttuu43rrrvORliSJKnfXX/99Rx99NGstNJKTJs2jc9//vNMnTqVI488kj//+c888sgjvOtd72LLLbfktNNO461vfSurrbYaO++8MzNmzHjSX/fkk0/m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\n",
      "text/plain": [
       "<Figure size 864x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "ax = df.mean(level=(1,2))[\"ratio_correct\"].unstack().plot(kind='bar', figsize=(12, 6))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Additionally, we may want simply to see which set of hyperparameters perform the best across the different __datasets__. We can do that by averaging the results of the different datasets."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>P: [learning_rate: 0.001] [epochs: 2] [im_size: 50]</th>\n",
       "      <th>P: [learning_rate: 0.001] [epochs: 2] [im_size: 100]</th>\n",
       "      <th>P: [learning_rate: 0.001] [epochs: 5] [im_size: 50]</th>\n",
       "      <th>P: [learning_rate: 0.001] [epochs: 5] [im_size: 100]</th>\n",
       "      <th>P: [learning_rate: 0.0001] [epochs: 2] [im_size: 50]</th>\n",
       "      <th>P: [learning_rate: 0.0001] [epochs: 2] [im_size: 100]</th>\n",
       "      <th>P: [learning_rate: 0.0001] [epochs: 5] [im_size: 50]</th>\n",
       "      <th>P: [learning_rate: 0.0001] [epochs: 5] [im_size: 100]</th>\n",
       "      <th>P: [learning_rate: 1e-05] [epochs: 2] [im_size: 50]</th>\n",
       "      <th>P: [learning_rate: 1e-05] [epochs: 2] [im_size: 100]</th>\n",
       "      <th>P: [learning_rate: 1e-05] [epochs: 5] [im_size: 50]</th>\n",
       "      <th>P: [learning_rate: 1e-05] [epochs: 5] [im_size: 100]</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>duration</th>\n",
       "      <td>9.398410</td>\n",
       "      <td>11.890141</td>\n",
       "      <td>15.509565</td>\n",
       "      <td>22.482978</td>\n",
       "      <td>6.922335</td>\n",
       "      <td>9.798860</td>\n",
       "      <td>15.431306</td>\n",
       "      <td>22.511284</td>\n",
       "      <td>6.881021</td>\n",
       "      <td>9.787884</td>\n",
       "      <td>15.488688</td>\n",
       "      <td>22.519216</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ratio_correct</th>\n",
       "      <td>0.773717</td>\n",
       "      <td>0.758830</td>\n",
       "      <td>0.874689</td>\n",
       "      <td>0.884166</td>\n",
       "      <td>0.751311</td>\n",
       "      <td>0.739025</td>\n",
       "      <td>0.801130</td>\n",
       "      <td>0.846993</td>\n",
       "      <td>0.351279</td>\n",
       "      <td>0.406604</td>\n",
       "      <td>0.369568</td>\n",
       "      <td>0.701474</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "               P: [learning_rate: 0.001] [epochs: 2] [im_size: 50]  \\\n",
       "duration                                                9.398410     \n",
       "ratio_correct                                           0.773717     \n",
       "\n",
       "               P: [learning_rate: 0.001] [epochs: 2] [im_size: 100]  \\\n",
       "duration                                               11.890141      \n",
       "ratio_correct                                           0.758830      \n",
       "\n",
       "               P: [learning_rate: 0.001] [epochs: 5] [im_size: 50]  \\\n",
       "duration                                               15.509565     \n",
       "ratio_correct                                           0.874689     \n",
       "\n",
       "               P: [learning_rate: 0.001] [epochs: 5] [im_size: 100]  \\\n",
       "duration                                               22.482978      \n",
       "ratio_correct                                           0.884166      \n",
       "\n",
       "               P: [learning_rate: 0.0001] [epochs: 2] [im_size: 50]  \\\n",
       "duration                                                6.922335      \n",
       "ratio_correct                                           0.751311      \n",
       "\n",
       "               P: [learning_rate: 0.0001] [epochs: 2] [im_size: 100]  \\\n",
       "duration                                                9.798860       \n",
       "ratio_correct                                           0.739025       \n",
       "\n",
       "               P: [learning_rate: 0.0001] [epochs: 5] [im_size: 50]  \\\n",
       "duration                                               15.431306      \n",
       "ratio_correct                                           0.801130      \n",
       "\n",
       "               P: [learning_rate: 0.0001] [epochs: 5] [im_size: 100]  \\\n",
       "duration                                               22.511284       \n",
       "ratio_correct                                           0.846993       \n",
       "\n",
       "               P: [learning_rate: 1e-05] [epochs: 2] [im_size: 50]  \\\n",
       "duration                                                6.881021     \n",
       "ratio_correct                                           0.351279     \n",
       "\n",
       "               P: [learning_rate: 1e-05] [epochs: 2] [im_size: 100]  \\\n",
       "duration                                                9.787884      \n",
       "ratio_correct                                           0.406604      \n",
       "\n",
       "               P: [learning_rate: 1e-05] [epochs: 5] [im_size: 50]  \\\n",
       "duration                                               15.488688     \n",
       "ratio_correct                                           0.369568     \n",
       "\n",
       "               P: [learning_rate: 1e-05] [epochs: 5] [im_size: 100]  \n",
       "duration                                               22.519216     \n",
       "ratio_correct                                           0.701474     "
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.mean(level=(1)).T"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To make it easier to see which permutation did the best, we can plot the results using the `plot_sweeper_df` helper function. This plot will help us easily see which parameters offer the highest accuracies."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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MnXqVAA++clP0tbW1u14R0cHkydPBmDlypXMmjWLgQMH8u53v7vutUqqr0pvo/1H4KYu20uBpbUqSpKkRli+fDlDhw5dP3Xovvvu63b8qaeeWv/4lFNO4bjjjjMwS/1EzVbAiIjrgOOA5Zk5prxvEPB9YASwEDgpM1fVqgZJkjZH0dQhSf1XLZeNuwG4itKazuucD9yVmRdHxPnl7fNqWIMkSRUrmjrU1Q033FDjaiT1JTW7mC8z7wF+32P3u4Bvlh9/E/BvWpIkSerz6r0CxhvK86HXzYve6CKXEXF6RHRERMeKFSvqVqAkSZLUU59dNi4zp2Vme2a2DxkypNHlSJIkqR+r962wl0XEzpm5tLxs3fI6n19NZMT5P67buRZefGzdztUf1PO9A98/SVLt1XukeSbwgfLjDwC31Pn8kiRJ0marWWiOiOnAfcDeEdEZEVOBi4EjI+Jx4MjytiRJktSn1Wx6RmZO2cihI2p1TkmSijj1S9KW6LMXAkqSJEl9haFZkiRJKmBolqQqe+655zjxxBPZZ599GDlyJPfdd1+346tWreL4449nv/3248ADD+TRRx9tUKWSpEr169DsB5ukWjjrrLOYMGECv/nNb3j44YcZOXJkt+Nf+MIXGDduHI888gjf+ta3OOussxpUqSSpUv06NPvBJqnaXnjhBe655x6mTp0KwNZbb82OO+7Yrc28efM44ojSNdH77LMPCxcuZNmyZXWvVZJUuX4bmv1gk1QLTz75JEOGDOGDH/wg48eP57TTTuPFF1/s1mbs2LHcdNNNAMyZM4enn36azs7ORpQrSapQvw3NfrBJqoU1a9bw4IMP8uEPf5iHHnqI173udVx8cfcl6c8//3xWrVrFuHHjuPLKKxk/fjwDB9b7Bq2SpM3Rb0OzH2ySaqGtrY22tjYOOuggAE488UQefPDBbm223357rr/+eubOncu3vvUtVqxYwW677daIciVJFeq3CbC3D7aeoXndBxtAZrLbbrv5wSZpk974xjcyfPhwFixYwN57781dd93FqFGjurV57rnn2Gabbdh66635xje+waGHHsr222/foIolSZXot6HZDzZJtXLllVdy8skn8/LLL7P77rtz/fXX87WvfQ2AM844g/nz5/P+97+fAQMGMGrUKK699toGVyxJKtJvQzP4wSapNsaNG0dHR0e3fWecccb6x4cccgiPP/54vcuSJL0K/To0+8EmSZKkSvTbCwElSZKkShmaJUmSpAKGZkmSJKmAoVmSJEkqYGiWJEmSCrT06hkjzv9xXc+38OJj63o+SY3h7xZJ6n8caZYkSZIKGJolSZKkAoZmSZIkqYChWZIkSSpgaJYkSZIKGJolSZKkAoZmSZIkqYChWZIkSSpgaJYkSZIKNOSOgBGxEFgNrAXWZGZ7I+qQJEmSKtHI22gfnpkrG3h+SZIkqSJOz5AkSZIKNCo0J3BHRPw6Ik5vUA2SJElSRRo1PeOtmbkkIoYCd0bEbzLznq4NymH6dIBdd921ETVKkiRJQINGmjNzSfm/y4GbgQN7aTMtM9szs33IkCH1LlGSJElar+6hOSJeFxHbrXsMHAU8Wu86JEmSpEo1YnrGG4CbI2Ld+b+XmbMbUIckSZJUkbqH5sx8Ehhb7/NKkiRJW8ol5yRJkqQChmZJkiSpgKFZkiRJKmBoliRJkgoYmiVJkqQChmZJkiSpgKFZkiRJKmBoliRJkgoYmiVJkqQChmZJkiSpgKFZkiRJKmBoliRJkgoYmiVJkqQChmZJkiSpgKFZkiRJKmBoliRJkgoYmiVJkqQChmZJkiSpgKFZkiRJKmBoliRJkgoYmiVJkqQChmZJkiSpgKFZkiRJKmBoliRJkgoYmiVJkqQChmZJkiSpgKFZkiRJKmBoliRJkgo0JDRHxISIWBART0TE+Y2oQZIkSapU3UNzRAwArgaOAUYBUyJiVL3rkCRJkirViJHmA4EnMvPJzHwZmAG8qwF1SJIkSRWJzKzvCSNOBCZk5mnl7fcBB2XmmT3anQ6cXt7cG1hQxzIHAyvreL56a+X+tXLfwP41O/vXvFq5b2D/mp39q643ZeaQnjsH1rGAdaKXfRsk98ycBkyrfTkbioiOzGxvxLnroZX718p9A/vX7Oxf82rlvoH9a3b2rz4aMT2jExjeZbsNWNKAOiRJkqSKNCI0PwDsGRG7RcTWwGRgZgPqkCRJkipS9+kZmbkmIs4EbgcGANdl5mP1rqNAQ6aF1FEr96+V+wb2r9nZv+bVyn0D+9fs7F8d1P1CQEmSJKnZeEdASZIkqYChWZIkSSpgaJYkSZIKGJolSZKkAoZmSZIkqYChWZIkSSpgaJYkSZIKGJolSZKkAoZmSZIkqYChWZIkSSpgaJYkSZIKGJolSZKkAoZmSZIkqYChWZIkSSpgaJYkSZIKGJolSZKkAoZmSZIkqYChWZIkSSpgaJYkSZIKGJolqQ+IiK9FxKcbXYckqXeRmY2uQZL6lYg4BTgtM9/W6FpqrT/1VVJrc6RZkqosIgY2uoYt1VvtzdwfSaoWQ7MkVUFELIyI8yLiEeDFiPiXiPhtRKyOiHkRcXy53Ujga8AhEfGHiHiuvP+GiPhcl9f7UEQ8ERG/j4iZETGsghpGR8Sd5ecsi4hPlvf/VURcHhFLyl+XR8RflY8dFhGd5dp/B1zf275y2+MiYm5EPBcR/y8i9uty7uERcVNErBkV2FsAACAASURBVIiIZyPiqo31VZKakaFZkqpnCnAssCOwAPgbYAfgs8B3ImLnzJwPnAHcl5nbZuaOPV8kIt4BfBE4CdgZeBqYsakTR8R2wE+A2cAwYA/grvLhTwEHA+OAscCBwL90efobgUHAm4DTe9sXEW8BrgP+N/B64OvAzHIgHwDcWq5zBLALMKOSvkpSszA0S1L1fCUzF2Xm/2TmDzNzSWa+kpnfBx6nFFYrcTJwXWY+mJl/Aj5BabR2xCaecxzwu8y8NDNfyszVmXl/l9e7KDOXZ+YKSiH+fV2e+wrwmcz8U2b+z0b2fQj4emben5lrM/ObwJ8ohfEDKQX1j2Xmi+Xz/7LCvkpSUzA0S1L1LFr3ICLe32Uqw3PAGGBwha8zjNKoLQCZ+QfgWUojuBszHPhtJa9Xftx1useKzHypx3N67nsTcO66/pT7NLz8OsOBpzNzzSbqk6SmZmiWpOpJgIh4E3ANcCbw+vK0hEeB6NpuE5ZQCqmUX+91lKZELN7EcxYBb67k9YBdy/u61d1Dz32LgM9n5o5dvrbJzOnlY7tu5IJBl2iS1BIMzZJUfa+jFBZXAETEBymNNK+zDGiLiK038vzvAR+MiHHlC/a+ANyfmQs3cc5bgTdGxNnlecbbRcRB5WPTgX+JiCERMRi4APjOZvbpGuCMiDgoSl4XEceW51LPAZYCF5f3vzYi3lphXyWpKRiaJanKMnMecClwH6XQuC9wb5cmPwUeA34XESt7ef5dwKeBH1EKo28GJhecczVwJPBO4HeU5lAfXj78OaADeAT4L+DB8r7N6VMHpXnNVwGrgCeAU8rH1pbPuwfwDNAJ/H0lfZWkZuHNTSRJkqQCjjRLkiRJBbzLkyQ1iYj4G+C23o5l5rZ1LkeS+hWnZ0iSJEkFnJ4hSZIkFWiK6RmDBw/OESNGNLoMSZIktbhf//rXKzNzSM/9TRGaR4wYQUdHR6PLkCRJUouLiKd72+/0DEmSJKmAoVmSJEkqYGiWJEmSChiaJUmSpAKGZkmSJKmAoVmSJEkqUNXQHBHXRcTyiHh0I8cjIr4SEU9ExCMR8ZZqnl+SJEmqhWqPNN8ATNjE8WOAPctfpwNfrfL5JUmSpKqramjOzHuA32+iybuAb2XJr4AdI2LnatYgSZIkVVu95zTvAizqst1Z3reBiDg9IjoiomPFihV1KU6SJEnqTb1Dc/SyL3trmJnTMrM9M9uHDNng9t+SJElS3dQ7NHcCw7tstwFL6lyDJEmStFnqHZpnAu8vr6JxMPB8Zi6tcw2SJEnSZhlYzReLiOnAYcDgiOgEPgO8BiAzvwbMAiYCTwB/BD5YzfNLkiRJtVDV0JyZUwqOJ/CRap5TkiRJqjXvCChJkiQVMDRLkiSpoWbPns3ee+/NHnvswcUXX7zB8aeffpojjjiC/fbbj8MOO4zOzs6612holiRJUsOsXbuWj3zkI9x2223MmzeP6dOnM2/evG5t/vmf/5n3v//9PPLII1xwwQV84hOfqHudhmZJkqQm0AyjsVtizpw57LHHHuy+++5svfXWTJ48mVtuuaVbm3nz5nHEEUcAcPjhh29wvB4MzZIkSX1cs4zGbonFixczfPhfbuPR1tbG4sWLu7UZO3YsP/rRjwC4+eabWb16Nc8++2xd6zQ0S5Ik9XHNMhq7JUqLq3UX0f0m0l/+8pf5+c9/zvjx4/n5z3/OLrvswsCBVV0ErpChWZIkqY9rltHYLdHW1saiRYvWb3d2djJs2LBubYYNG8ZNN93EQw89xOc//3kAdthhh7rWaWiWJEnq45plNHZLHHDAATz++OM89dRTvPzyy8yYMYNJkyZ1a7Ny5UpeeeUVAL74xS9y6qmn1r1OQ7MkSWoJRRfKPfPMMxx++OGMHz+e/fbbj1mzZjWgyi3TLKOxW2LgwIFcddVVHH300YwcOZKTTjqJ0aNHc8EFFzBz5kwA7r77bvbee2/22msvli1bxqc+9am61xm9/Z9LX9Pe3p4dHR2NLkOSJPVRa9euZa+99uLOO++kra2NAw44gOnTpzNq1Kj1bU4//XTGjx/Phz/8YebNm8fEiRNZuHBh44reDGvWrGGvvfbirrvuYpddduGAAw7ge9/7HqNHj17fZuXKlQwaNIitttqKT33qUwwYMICLLrqogVU3p4j4dWa299zvSLMkSWp6lVwoFxG88MILADz//PMbjNT2Zc0yGtvKHGmWJElN78Ybb2T27Nl84xvfAODb3/42999/P1ddddX6NkuXLuWoo45i1apVvPjii/zkJz9h//33b1TJ6qMcaZYkSS2rkgvlpk+fzimnnEJnZyezZs3ife973/qLy6QihmZJktT0KrlQ7tprr+Wkk04C4JBDDuGll15i5cqVda1TzcvQLEmSml4ly5btuuuu3HXXXQDMnz+fl156iSFDhjSiXDUhQ7MkSWp6lVwod+mll3LNNdcwduxYpkyZwg033LDBFA5pY7wQUJIkSbV3YZ3XjL7w+S16mhcCSpLUz7XyzT+kWuv791aUJEmv2tq1a/nIRz7S7eYfkyZN6nbzj8997nOcdNJJTXnzj5bQJCOx/ZUjzZIk9QOtfvMPqdYcaZYkqR9YvHgxw4cPX7/d1tbG/fff363NhRdeyFFHHcWVV165/uYfkkocaZYkqR/w5h/Sq2NoliSprJUvlPPmH9Kr4/QMSZJo/Qvlut78Y5dddmHGjBl873vf69Zm3c0/TjnllL558w8vlFMDOdIsSRKtf6GcN/+QXh1HmiVJFZs9ezZnnXUWa9eu5bTTTuP888/vdvyZZ57hAx/4AM899xxr167l4osvZuLEiQ2qdvP0hwvlJk6cuMH7cdFFF61/PGrUKO699956lyU1BUeaJanKWnVe7LrpC7fddhvz5s1j+vTpzJs3r1ubddMXHnroIWbMmME//uM/NqjazeeFcpI2xdAsSVXUysGy1acveKGcpE2pemiOiAkRsSAinoiI83s5vmtE/CwiHoqIRyKiOf5uJ6lqikZizznnHMaNG8e4cePYa6+92HHHHRtQ5ZZp5WDZ2/SFxYsXd2tz4YUX8p3vfIe2tjYmTpzIlVdeWe8yt1jXC+VefvllZsyYwaRJk7q1WXehHNA3L5STVDNVDc0RMQC4GjgGGAVMiYhRPZr9C/CDzBwPTAb+vZo1SOrbKhmJveyyy5g7dy5z587ln/7pn3jPe97ToGo3XysHy1afvuCFcpI2pdoXAh4IPJGZTwJExAzgXUDXT8QEti8/3gFYUuUaJPVhXUdigfUjsV2X9epq+vTpfPazn61nia/K5gTLc889l/vuu4/3ve99PProo2y1Vd+eMVfp9IXZs2cD3acvDB06tK61bikvlJO0MdUOzbsAi7psdwIH9WhzIXBHRPwT8Drgb6tcg6Q+rJIVCtZ5+umneeqpp3jHO95Rr/JetVYOli2xzm+rcx1jqWaqPazR29+oeg67TAFuyMw2YCLw7YjYoI6IOD0iOiKiY8WKFVUuU1KjVDISu86MGTM48cQTGTBgQK3LqppWnhfr9AVJ/Vm1R5o7geFdttvYcPrFVGACQGbeFxGvBQYDy7s2ysxpwDSA9vb2DT9lJTWlSkZi15kxYwZXX311vUqriq7Bcu3atZx66qnrg2V7ezuTJk3i0ksv5UMf+hCXXXYZEdFUwdLpC5L6q2qH5geAPSNiN2AxpQv93tujzTPAEcANETESeC3gULLUT1TyJ36ABQsWsGrVKg455JAGVPnqGCwlqfVUdXpGZq4BzgRuB+ZTWiXjsYi4KCLW/X3yXOBDEfEwMB04JXv7e63Uj7XykmyV/IkfShfLTZ48uWlGYCVJrS2aIa+2t7dnR0dHo8uQ6mLt2rXstdde3HnnnbS1tXHAAQcwffr0ja4uceWVV/LQQw9x3XXX1blSSX1Oq18IaP+qfD7715uI+HVmtvfcX+3pGZJepVZfkk1quHp+cLu6hNQy+vaioFI/VMnNMdZpxiXZJElqRo40S31Mqy/JpibQJH9ClaR6cqRZ6mM2d0m2KVOm1Ks0SZL6LUeapT6mPyzJ1vQciZWkfseRZqmPcUk2SZL6HkeapT6o6OYYABdeeGEdK9pMjsRKklqMI82SJElSAUOzJEmSVMDQLEmSJBUwNEuSJEkFDM2SJElSAUOzJEmSVMAl56RGcEk2SZKaiiPNkiRJUgFDsyRJklTA0CxJkiQVMDRLkiRJBQzNkiRJUgFDsyRJklTA0CxJkiQVMDRLkiRJBQzNkiRJUgFDsyRJklTA0CxJkiQVMDRLkiRJBQzNkiRJUgFDsyRJklSg6qE5IiZExIKIeCIizt9Im5MiYl5EPBYR36t2DZIkSVI1Dazmi0XEAOBq4EigE3ggImZm5rwubfYEPgG8NTNXRcTQatYgSZIkVVu1R5oPBJ7IzCcz82VgBvCuHm0+BFydmasAMnN5lWuQJEmSqqraoXkXYFGX7c7yvq72AvaKiHsj4lcRMaHKNUiSJElVVdXpGUD0si97OeeewGFAG/CLiBiTmc91e6GI04HTAXbdddcqlylJkiRVrtojzZ3A8C7bbcCSXtrckpl/zsyngAWUQnQ3mTktM9szs33IkCFVLlOSJEmqXLVD8wPAnhGxW0RsDUwGZvZo8x/A4QARMZjSdI0nq1yHJEmSVDVVDc2ZuQY4E7gdmA/8IDMfi4iLImJSudntwLMRMQ/4GfCxzHy2mnVIkiRJ1VTtOc1k5ixgVo99F3R5nMBHy1+SJElSn+cdASVJkqQChmZJkiSpgKFZkiRJKmBoliRJkgoYmiVJkqQChmZJkiSpgKFZkiRJKmBoliRJkgoYmiVJkqQChmZJkiSpgKFZkiRJKmBoliRJkgoYmiVJkqQChmZJkiSpgKFZkiRJKmBoliRJkgoYmtWUZs+ezd57780ee+zBxRdfvNF2N954IxFBR0dHHauTJEmtxtCsprN27Vo+8pGPcNtttzFv3jymT5/OvHnzNmi3evVqvvKVr3DQQQc1oEpJktRKDM1qOnPmzGGPPfZg9913Z+utt2by5MnccsstG7T79Kc/zcc//nFe+9rXNqBKSZLUSgzNajqLFy9m+PDh67fb2tpYvHhxtzYPPfQQixYt4rjjjqt3eZIkqQUNbHQB0ubKzA32RcT6x6+88grnnHMON9xwQx2rkiRJrcyRZjWdtrY2Fi1atH67s7OTYcOGrd9evXo1jz76KIcddhgjRozgV7/6FZMmTfJiQEmStMUMzWo6BxxwAI8//jhPPfUUL7/8MjNmzGDSpEnrj++www6sXLmShQsXsnDhQg4++GBmzpxJe3t7A6uWJEnNzNDcolp5SbaBAwdy1VVXcfTRRzNy5EhOOukkRo8ezQUXXMDMmTMbXZ4kSWpBzmluQeuWZLvzzjtpa2vjgAMOYNKkSYwaNapbu2Zekm3ixIlMnDix276LLrqo17Z33313HSqSJEmtzJHmFuSSbJIkSdVlaG5BLskmSZJUXf06NLfqvN9Kl2S79NJL61mWJElS0+q3obmVb8XskmySJEnVVfXQHBETImJBRDwREedvot2JEZER0ZB1wFp53q9LskmSJFVXVUNzRAwArgaOAUYBUyJiVC/ttgP+D3B/Nc+/OVp53q9LskmSJFVXtZecOxB4IjOfBIiIGcC7gJ7zHv4V+BLwz1U+f8Va/VbMLbEk24U71PFcz9fvXJIkqelUe3rGLsCiLtud5X3rRcR4YHhm3rqpF4qI0yOiIyI6VqxYUeUynfcrSZKkylU7NEcv+9YP6UbEVsBlwLlFL5SZ0zKzPTPbhwwZUsUSS5z3K0mSpEpVOzR3AsO7bLcBS7psbweMAe6OiIXAwcDMRlwM6LxfSZIkVarac5ofAPaMiN2AxcBk4L3rDmbm88DgddsRcTfwz5nZkDkPLTHvV5IkSTVX1ZHmzFwDnAncDswHfpCZj0XERRExadPPliRJkvqmao80k5mzgFk99l2wkbaHVfv8kiRJUrVVPTSrjuq5JBu4LJskSeq3+u1ttCVJkqRKGZolSZKkAq09PcPpC5IkSaoCR5olSZKkAoZmSZIkqYChWZIkSSpgaJYkSZIKGJolSZKkAoZmSZIkqYChWZIkSSpgaJYkSZIKGJolSZKkAoZmSZIkqYChWZIkSSpgaJYkSZIKGJolSZKkAoZmSZIkqYChWZIkSSpgaJYkSZIKGJolSZKkAoZmSZIkqYChWZIkSSpgaJYkSZIKGJolSZKkAoZmSZIkqYChWZIkSSpgaJYkSZIKVD00R8SEiFgQEU9ExPm9HP9oRMyLiEci4q6IeFO1a5AkSZKqqaqhOSIGAFcDxwCjgCkRMapHs4eA9szcD7gR+FI1a5AkSZKqrdojzQcCT2Tmk5n5MjADeFfXBpn5s8z8Y3nzV0BblWuQJEmSqqraoXkXYFGX7c7yvo2ZCtzW24GIOD0iOiKiY8WKFVUsUZIkSdo81Q7N0cu+7LVhxD8A7cD/7e14Zk7LzPbMbB8yZEgVS5QkSZI2z8Aqv14nMLzLdhuwpGejiPhb4FPA2zPzT1WuQZIkSaqqao80PwDsGRG7RcTWwGRgZtcGETEe+DowKTOXV/n8kiRJUtVVNTRn5hrgTOB2YD7wg8x8LCIuiohJ5Wb/F9gW+GFEzI2ImRt5OUmSJKlPqPb0DDJzFjCrx74Lujz+22qfU5IkSaol7wgoSZIkFTA0S5IkSQUMzZIkSVIBQ7MkSZJUwNAsSZIkFTA0S5IkSQUMzZIkSVIBQ7MkSZJUwNAsSZIkFTA0S5IkSQUMzZIkSVIBQ7MkSZJUwNAsSZIkFTA0S5IkSQUMzZIkSVIBQ7MkSZJUwNAsSZIkFTA0S5IkSQUMzZIkSVIBQ7MkSZJUwNAsSZIkFTA0S5IkSQUMzZIkSVIBQ7MkSZJUwNAsSZIkFTA0S5IkSQUMzZIkSVIBQ7MkSZJUoOqhOSImRMSCiHgiIs7v5fhfRcT3y8fvj4gR1a5BkiRJqqaqhuaIGABcDRwDjAKmRMSoHs2mAqsycw/gMuCSatYgSZIkVVu1R5oPBJ7IzCcz82VgBvCuHm3eBXyz/PhG4IiIiCrXIUmSJFVNtUPzLsCiLtud5X29tsnMNcDzwOurXIckSZJUNZGZ1XuxiL8Djs7M08rb7wMOzMx/6tLmsXKbzvL2b8ttnu3xWqcDp5c39wYWVK3QYoOBlXU8X721cv9auW9g/5qd/Wterdw3sH/Nzv5V15syc0jPnQOrfJJOYHiX7TZgyUbadEbEQGAH4Pc9XygzpwHTqlxfRSKiIzPbG3Huemjl/rVy38D+NTv717xauW9g/5qd/auPak/PeADYMyJ2i4itgcnAzB5tZgIfKD8+EfhpVnO4W5IkSaqyqo40Z+aaiDgTuB0YAFyXmY9FxEVAR2bOBK4Fvh0RT1AaYZ5czRokSZKkaqv29AwycxYwq8e+C7o8fgn4u2qft8oaMi2kjlq5f63cN7B/zc7+Na9W7hvYv2Zn/+qgqhcCSpIkSa3I22hLkiRJBQzNkiRJUoGqz2luJhHxlgqa/Tkz/6vmxdRAP+jfRyto9mJmfr3mxdRAP+jfeypo9lL5OommEhGDKmj2SmY+V/NiaqDV+9fqWv39a+XfLa2ur39v9us5zRGxmtIyeZu6jfdumTmiPhVVVz/o31Lgq2y6fydn5l51Kqmq+kH/ngVuYdP9OzQz31ynkqomIl6itEb9pvo2IDN3rVNJVdUP+vdIBc1WZOYRNS+mBvrB+9fKv1v83mzg92a/HmkGHsjMd2yqQUT8tF7F1ECr9+/bmXnRphpExOvqVUwNtHr/bsvMUzfVICK+U69iqmx+Zo7fVIOIeKhexdRAq/dvADBxE8eDDe9B0Exa/f1r5d8tfm828HuzX480S1ItRMRry8trvqo2fVU/6N/bMvOXr7ZNX9Xq718r83uzsd+b/T40R8QOwARgFyAp/Vng9mady9VTP+jf0cC76d6/WzJzdkMLq5J+0L99gHfRvX8zM3N+QwurgogI4EC6921Oq9wBtdX7t055jmVm5qpG11JNrf7+tfLvlnX83qy/fh2aI+L9wGeAO4DF5d1twJHAZzPzW42qrRr6Qf8uB/YCvgV0lne3Ae8HHs/MsxpVWzX0g/6dB0wBZtC9f5OBGZl5caNqe7Ui4ijg34HH6f6ztwfwj5l5R6Nqq4Z+0L9dgS8BRwDPUfqT9/bAT4HzM3Nh46p79frB+9fKv1v83myg/h6aFwAH9Rx1jYidgPub9QKrdfpB//67tz6U/y/1vzNzzwaUVTX9oX/A6Mz8c4/9WwOPNXP/ImI+cEzPD7CI2A2YlZkjG1JYlfSD/t0HXA7cmJlry/sGULqb7dmZeXAj63u1+sH718q/W/zebKD+vk5zUBr67+kVNn3lZrNo9f69FBEH9rL/AKAV5uK1ev9eAYb1sn/n8rFmNpC/jHB1tRh4TZ1rqYVW79/gzPz+ulACkJlrM3MG8PoG1lUtrf7+tfLvFr83G6i/r57xeeDBiLgDWFTetyul6Qv/2rCqqqfV+3cK8NWI2I6//JANB14oH2t2p9Da/TsbuCsiHqf79+cewJkNq6o6rgMeiIgZ/KVvwyn9efja/9/eucdrW47p/3u0U1IRESUVpTKjjTBGYy+zsQ0hm8QwzJTw+9mbETNmDMMPDTM2qexp7CpMQyqbxohKpSLyRspeSk27t/P3x30/b8+7Wu9aK+t+1nVfx3V+P5/1aT2bPs7DdT5H17qf6zjvYlUNh7u+b0l6J3A0a+s7EKh5qsQE9/Vz9pbszYI0fTwD1hxVeATdgXPRbU5OcDlY764PQNLWTOmLiJ8WLmlQnPVJWo8bAx+T/jxt+ipKrUjalRuDSBNtx0bEuUULGwhJuwGPxlBf/zX+s5ln/YAjIuKaguUNQgP9aektjfTmaL2l+U1zUjcNTAdx1zfalHSyNFwT/EndpLfUzxi9pekzzZKeNfX7NpJOlPQbSadKqjokB03oewZwOvAg4JbApsCD6b6+ekbB0gahAX370iWkD6Mb1v8XwGuBC/rXqkXSn079voWk90o6S9KHJd2hZG1DIGk7SR+V9HPgf4BvSPp5/9z2ZatbPpJuN+fx0yS9XdJz+81Y1TTQn87e4t6bo/aWpq80Szo9Ivbqf/84cCLwHrqvPQ6u9TaUExrQ5z4dxF3fqFPSy2HOZ++9wE/pPnv7AQ+MiMeWrG+5NJDgn16/VwN/AnwYeCTdEakXlaxvuTTQn614i2Nvjtpbmr7SPIedI+JdEXFDRHwK2LJ0QQPjqM99Ooi7vlGnpAdk74h4dURcFBH/D9i+dEED4J7gn/587QfsFxFHAwcADytT0sxw7E9nb3HvzVF7S+vTM7aV9Ha6JtxK0oZTcx1r/2CBvz736SDu+kadkl4mt5f0YvobD0jS1FlKh4sV7gn+TSTtSbdW60fElQARcZ2kqoNkPe796ewt7r05am9p/XjGgXOeOjYiftNPK3hBRLyyRF1D4a4P/KeDNKDPMsEv6TVznnpnRPyi/+y9MSKqPpO+jgT/j4HjMEjwSzppzlMHRMSlkm5L9/nbu0RdQ+Hen2DtLe69OWpvaXrTnCRJkiRLpT9beYuIuKp0LUkyTfbmyuDwNUyS3ARJZ5euYZY0oO/zpWtIfj8k/V3pGmZFf7YyNyUV4+otLfTmGLyl9TPNScVI2m9dLwFbr2Qts6ABfXut6yVgj5WsJRmUvwReV7qIpF3SW2wp7i25aU5q5mPAh5h/wsTGK1zLLHDXdxpwCvNPArn1CteS3AwkXb6ul4BNVrKWJJmH9JZKGbu35Ka5R9JeEXH6uh7Xjqm+s4B/iYhz5r4gyWH0jru+84C/iogL5r4g6cfzvL9KJG09fevzuY8r5TLg3hHxs7kvOK1dC5j2ZxPeYsqovSXPNN/I8xd5XDuO+l4IrOuv0setZCEzwl3fYazbgw5ZwTpmzdwRV7WPvAJ4P3CXdbz24ZUsZNZIOn6hxwY49udhNOAtpr05am/J6RlJkiRJsg4k3TEiLl3X4yQpRfbmypNXmgF1PG2SzOzvfX6f0nUNhbu+JBkzkvaRdFD/+1b9rXyTerhM0t0nD9w2JdmfVWPdm2MkN80d7wTuBzylf3wF8I5y5QyOu74kGSX9TSReBryif2pD4IPlKkpuDpIeBZwJ/Gf/eA9Jx5atajiyP+vFvTfHSm6aO+4bEX8DXA3Q321to7IlDYq7viQZK48DHg1MbnV7CbBZ0YqSm8NhwH3owklExJnA9gXrGZrsz3o5DO/eHCW5ae64rr+bTkD3FRVwQ9mSBsVd303mci4wp7NKGtC39UKPK+ba6IIjk8/epoXrSW4e10fEb0sXMUPs+9PYW9x7c5Tkprnj7cCngNtLej3wVeAfy5Y0KO76wHM6yDTu+hwT/AAfl/Qu4NaSngN8EXhv4ZoGxTTBP+EcSQcA60vaSdLhwKmlixoQ+/7E11vce3OU3pLTM3ok7QI8lG6A9okRcV7hkgbFXV+SjBVJDwf2pfvsnRARXyhc0qA4J/gl3RJ4Fd36AZwA/ENEXF2uqmFx709XGunN0XlLbpoBSUcAh/dngibPHRYRh5Wrajga0CfgqcCOEfE6SdsBW0fENwqXNgju+qBL8AM7RcSR/fGhW0XED0vXtVwk/S1wVET8eOq550bEuwuWNSiSNgG2i4jvlq5laCT9CXBqRKyees7hxlBAM/3p6i3WvQnj9JY8ntHxCOAoSc+Yeu7RpYqZAe763KeDWOszT/AfApwg6cFTzz2vVDFD00CC/wTgS5LuMPWc0/EF9/509hbr3hyrt+SmuePnwAOAJ0p6h6QNmP+e9bXirs99Ooi7PucE/0+APwXeIOkl/XNOn73D8E7wfxd4E3CypD/un3NaP/f+dPYW9948jBF6S26aOxQRl0fEo4BfAKcAWxSuaUjc9blPB3HXZ53gndFFmAAAIABJREFUj4gfAQ8EdpN0DLBJ4ZKGxD3BHxFxPN3G618lHUzfpy6Y96ezt7j35ii9JTfNHWsu+ffnfP8JWFWqmBngrs99Ooi7PucE/zcBIuLqiDgIOBmvbwncE/wCiIgLgD+h+8bunkUrGhb3/nT2FvfeHKW3ZBAwscB9OkgD+jLBXyEtJPjnImm7/upsUgEteYtTb47VW5reNEv6akTsI+kK1v5aQ3RffWxeqLRBcNc3oYHpIO767BL8kj4eEftLOpt5vjKNCIsrQq4JfkkvjYg3Snr7fK9HxAtWuqYhaag/Hb3FujcnjNVbmt40Jx5Iuhj4JfCWiHh//9zpEWFx17wG9P2cTt/fRMRJ/XNV65vME5V0l/lej4iLVrqmWSDpKuA0YP+I+Fn/XNVrB11yPyKOk3TgfK9HxNErXdOQNNSfjt5i3ZsTxuotG5T8Hx8Lku4KXBwR10h6EN25oPdHxGVlKxsGd31000EeBHxI0n2BQ/FKEbvr+wnwGOAYSf8REW+icn1TA/h/CfxvRNwgaWdgF+Dz5SobnOkE/7Mj4lQqXzuAiDiu/+eaDYik9ehm/F5erLCBaKg/Hb3FujenGKW3ZBCw4xPAakl3o7vF5g7Ah8uWNCju+tyng7jrc07wfxnYWNI2wInAQcBRRSsaFusEv6QPS9q8n7pwLvDdqdFsDrj3p623NNCbo/SW3DR33BAR19PNdHxrRLwIuGPhmobEXZ/7dBB3fc4JfkXEVcB+dOfSHwfsVrimIXFP8O/WX717LPA5YDvg6WVLGhT3/nT2FvvehPF5S26aO66T9BTgQOD4/rkNC9YzNNb6IuI1cx4fHxEPKVXP0DSg7zlzHr8jInYsVc/ASNL96G6D/tn+OZtjcRGx59TvV0bE/oDL2gFsKGlDuo3JZyLiOkZwtWtA3PvT2Vuse3Os3mLz4VgmB9HdOvT1EfFDSTvgc6tNMNXnPh2kAX0tJPgPpbuF76ci4juSdgROKlzTslkswQ9YJPiBd9F9q/Nt4Mt9cM7p3Khrf7bgLZa9OXZvyekZS0DSJyLi8aXrmBXu+pJx0kqCfyEkHR4Rh5Su4+bSSoJ/LpIErN8fd0PSga5aoer+bM5bXHpz7N6Sm+YlIOmM6a8K3Khdn/t0kAb0bco8Cf7+60ZrxjBCaShME/wL4rR+81G7vvSWetdumjF5S55pXhruf1nUrs99Ooi7PvsEvysNJPgXo/gIrGRBWvaWqntzrN6Sm+bEAffpIO763BP8zrgn+Bej9gsO7rTsLbX35ii9JTfNS6Pqv9iWQO36rKeD4K/POsG/CLV/9qwT/Eug9vVbjNr1pbfUyyi9JTfNS+NlpQuYMbXrOwi4H2bTQaZw12eZ4F8ibytdwDKZJPg3xSjBfzP4WukCZkzt/dmyt9Tem6P0lgwCApIeCfw9cBe6v0ItRnpNcNe3GO7TQRrQV2WCH0DS3sCruOlnz2Hk1U1wSfBPkHRr4BnA9kxdoYwIi5F6rfXnXCr3FuvenMtYvKWVrykW4610Z57ODs+/Itz1LUbxgegzxl3f/UsXsAw+BLwEOBu4oXAtM6f3l+unnjoUqHbTTHeW8uv4rl9T/TkPNXuLe2+uxVi8JTfNHT8GzjHeULrrWwx33e76auYXEXHs4m+zpfZzlRtHxItLFzFDWu/PmnHvzcUo4i25ae54KfA5SacA10yejIi3lCtpUNz1JclYeY2k99KNu5r+7H2yXEkrSu1/0H1A0nPoArjT6/frciUNSuv9WTPuvbkYRbwlN80drwd+B2wMbFS4llngrm8xar/atRipb7wcRHdDhQ258SvUAFrZlNS8dgDXAm+iO/c7+Y904HMkKvuzXtx7czHySnNBtoyIfUsXMUPc9S1G7dNBFsNdX80J/t0j4g9LF1GQ2hP8LwbuFhG/LF3IjGi9P2v2FvfeXIwi3pKb5o4vSto3Iv6rdCEzwlrfYtNBatfdgL4FE/wRcVS56pbN1yXtFhHnli5kFiyW4I+Ig8tUNhjfAa4qXcQMce9PZ2+x7s2xekuOnAMkXUE3C/Aa4DrMRrI1oO/7GE8HaUDfd5knwR8RFxUraiAknQfcFfgh3efPaqSXpFOZJ8Ff85i5aSR9CrgH3Wzf6XOjFmO9GuhPZ29x781RekteaQYiYrPSNcwSd334Twdx1+ec4P/T0gXMGPcE/6f7H1fc+9PZW9x7c5Te0vSVZkm7RMT5kvaa7/WIOH2laxoSd30TJN2b7viC5XSQBvQ9FHgKRgl+SZtHxOWStpzvdZeEu6QX0YWMW03wV0lD/WnnLa0wVm9p/Urzi4HnAm+e57UAHrKy5QyOu74J7tNB3PU5Jvg/DDwS+Badlumkt1PC3TLBL+njEbG/pLOZZ7SVwfGFVvrTzlsa6M0Jo/SWpq80Jx5I+mZE7F26jlnRgL6zG0/wV4ukHwD3dUvwS7pjRFwq6S7zve5wJrYFHL2lld4cq7esV7qAkqzr2MLNfc9Ycdc3xRclOY/Uc9f3dUm7lS5iSCRtPcR7KsAywR8Rl/b/vGi+n9L1LZeG+tPOW9x7c4pRekvTV5olfRt4EAsPyT4xIvZcmYqGxV3fhAamg7jrs0vwSzo9Ihb8g3Qp7xk7rgl+ScdHxCOX+56x0lB/OnqLdW9OGKu3tH6meQu6M10LbSp/sUK1zAJ3fYD/dBB3fXgm+HeXdPkCrwtY6PVacE3w7yNpoakLAmq+gtlKfzp6i3tvThiltzR9pTmpG/fpIA3oayLBn9SHpAcu4W3XRsR/z7yY5Gbj7C3Zm2XJTXNSLZLeHRHPlXTSPC9HRFQ9HaQBfcdHxCMl/ZB5EvwR4ZLgt6OhBH9SIekt9TJ2b8lNc5IkSXKzaCXBnyTJyjJ2b8lNc1ItkvZa7IjCUt4zVhrQt3VE/HS570mSJJkmvSWZFU1vmiXtt4S3XR0Rn5t5MTOgAX3W00Ea0Geb4F/iKMfrIuLsmRczA1pJ8LvSQH/aeos7Y/eW1jfNvwI+w8KbkgdExF1XqKRBaUDfKrq7PC04HSQi7rMyFQ1LA/pWA1cu9Bbg8ojYZoVKGox+TOBpLLx2O0TE9itT0bBIugz48kJvAe5R69nRRSZLQKfv0ojYeSXqGZoG+tPZW9x7c9Te0vrIuc9HxLMWeoOkD65UMTPAWl+thr5UGtC3fukaZshpiwU1JX1ppYqZAY9ZwnuunXkVs+MHi32DI+mMlSpmBlj3p7m3uPfmqL2l6SvNSZIkSTIXSTtGxIXLfU+SDE32Zlma3zRL2hzYKiJ+MOf5e0bEWYXKmgmSdgD2BM6NiPNL15Mk7kjaMCKum/Pc7SLil6VqSpK5SLoVsDNwYURcVrqeJBkr65UuoCSS9gfOBz4h6TuS7j318lFlqhoOSZ+e+v0xwJeARwGfkfTMUnUliTuSHizpYuASSf8lafupl/+rTFXJUpF0Z0kflfQVSa+UtOHUa6O7S9nNRdI7p37fBzgXeDNwtqQ/L1ZYsiiSnjX1+7aSTpR0maRTJVV5jrkmWj/T/ErgXv1MwPsAH5D0yoj4JAsHJGphes7hy4CHRMQPJd0OOJHK/zBoYDqIuz7nBP8bgUdExHckPQH4gqSnR8TX8fAWd94HfAL4OvBs4BRJj4qIX7G2r9bKH039/vfAYyPidEk7Ah8HqvSUCebecjBdfwK8hW69Hk53FvjfgIcWqqsJWt80rx8RlwJExDckPRg4XtK2zHMnmgqZ1rBBRPwQICJ+KemGQjUNyXtYwnQQ6v0PgLu+U1hCgh/YfkWqGZaNIuI7ABHxH5LOAz4p6eUYeIt7gp/uyN6/978fIulpwJclPRqD9ZvD5pNZ7xFxoSSHEJ2zt0yzc0Ts3//+KUl/V7SaARi7t7S+ab5C0l0n55n7K84PAj4N3KNoZcOwe9+AAm4xGeYuaSPAwRitp4Pgr885wX/d9M0T+ivODwWOB6oc8TgH9wT/hpI2joirASLig5J+CpwAbFq2tEHYRdJZdP9t2F7SbSLiN5LWAzZc5N+tAWdv2VbS2+nWbqs5uQmHtRu1tzQdBJS0O3BlRHx/zvMbAvtHxIfKVDZbJN0a2DUi/rt0LUniiKSH0c3Q/vac57cADo6I15epbBjcE/ySXgScHhGnzHl+T+CNEfHwMpUNg256i+JLIuK6/ujeA/ojiskIkXTgnKeO7f/g2Rp4QUS8skRdQzF2b2l605zUT04/qZ+cMJEkySzJ6SDJUDQ9PSOpm5x+Ujc5YaJe3KdLJHWT00HqZezTQXLTnNTMZPrJHsBBdNNPJhMnHCYUzDf95CDg/sCLypQ0KJMJE1sB76abMDFJ9TusnzPvA04GDgHuSDdd4rb9aw7TJZK6mW86yIOBBwKvK1NSskQOnvp9Mh1kS+BNdNNBitJ6EDCpm5x+UjfWEybMaWm6RFI3jtNBWmF000HySnOPpMMWelw7pvqukLRmEkG/gX4Q3bxKm+knkq4A9uiDHhhNP7luogm6CRN0M0ZfA+xUrKqBkfTchR5XyoaSNp48iIgPAofSTZe4Y7GqZsDcmb9LnAFcDab9uYuksySdDews6TYARtNBANve3FbS2yUdTj8dZOq14muXm+Yb+dYij2vHUd/zmfM1fkRcAfwpsOCothqIiPUjYvOI2CwiNpqMLwNuCfxVydoG4uXAHaafiIiL6b5CfUORimbD3KMmDkdP3gvcd/qJiPgi8ETgnCIVzY7nL/K4dhz7c1e6/McjgT8Aftc/vyVQ/GrlgDj25kvo9iffpDuCeSuA/gLLsQXrAnJ6RpIkSZIkSZIsSl5pBiS9UdLmkjbsk5q/7M/oWeCuL0nGiqRD+8+eJB0h6XRJ+5auK1kaku4vadP+96dJess8M46rJfuzXtx7c6zkprlj34i4nO6rnIvp5jm+pGxJg+KuL0nGyrP6z96+wFZ0U16cjp6482/AVf2NsF4KXAS8v2xJg5L9WS/uvTlKctPcMTlc/ufARyLi1yWLmQHu+pJkrEzOh/45cGR/h0CHM6OtcH10ZxgfA7wtIt4GbFa4piHJ/qwX994cJblp7jhO0vnA3sCJkrYCri5c05C463OdDrKGBvQ5JvgBviXpv+g2JSdI2gxwGBe4BtME/4QrJL0CeBrw2X5cWfEE/4C00J+u3uLem6P0ltw0AxHxcuB+wN797XyvpPvrzQJ3fT2O00GmcdfnmOAHeDbdlJB7R8RVwEZ0X4E74Zjgn/Ak4Brg2f30mm3obrLgQgv96eot7r0JI/SWnJ7RI+mPge2ZuuFLRNicD3LXlyRjRdI2dHfJm/7sfblcRUlyI9mfSbJ08kozIOkDwL8A+wD37n/2LlrUgDSgz3o6SAP6bBP8kv4Z+Brwarrw7UuA/1u0qAFxT/BL2k/SBZJ+O7nRkKTLS9c1FA30p7O3uPfmKL0lrzQD6m7fu1uY/p/RgL4zI2IPSY8DHgu8CDgpInYvXNogNKDv2xGxu6RHAH8D/C1dKKn4+bXlIum7wD0j4prStcwCSWcBuwP3BD4AHAHsFxEPLFrYQEj6PvCoiDivdC2zoIH+dPYW994cpbfkleaOc4CtF31Xvbjrc58O4q7POcF/IWbhnDm4J/h/5rop6XHvT2dvce/NUXrLBou/xRdJxwFBtxDnSvoG3cF6ACLi0aVqGwJ3fVNMpoP8L/DXhtNB3PVNEvw7AK9wSPBLOpzus3cVcKakE1n7s/eCUrUNzHSC/wEuCX5J+/W/flPSx4BPs/b6fbJIYQPRUH86eot1b04xSm9p+niGpAUv80fEKStVyyxw1zeNpNsAl0fEakm3BDbvE8UWOOuTtB6wB3BhRFwm6bbANhFxVuHSfm8kHbjQ6xFx9ErVMkskbQ0cAJwWEV+RtB3woNpDxpKOXODliIhnrVgxM6Ch/nT0FuvenDBWb2l60zxB0g7ApRFxdf94E+AOEbGqaGED4a4P/KeDNKDPMsHfB1mujojV/eP1gVv0472SpCgt9KertyRlyDPNHcew9lc2q/vnXLDW18B0EHd9zgn+E4FNph5vAnyxUC2D00CC/2hJt556fBtJ7ytZ08C496ett7j35li9pekzzVNsEBHXTh5ExLWSNipZ0MC469sb4+kg+Ot7LHB30wT/xhHxu8mDiPhdf7zGhTdinOCnmyxx2eRBRPxG0p4lCxoY9/509hb33hylt+SV5o5fSFoTipP0GOCXBesZGnd97tNB3PU5J/iv1NStXyXdiy7Q6YJ7gn+9Pk8AgKQt8brY5N6fzt7i3puj9JY80wxIuivwIbrbUAL8GHh6RPygXFXD4apvznSQPQCr6SAN6Jsk+Lehm8dpl+CXdG/go8Al/VN3BJ4UEVXfBn0qwf9Auj/oLBP8kp4BvAL4j/6pJwKvj4gPlKtqOIz7swVvsezNsXtLbpqnkHQruv9Prihdyyxw0+c+HaQBfa0k+DcE7k43H/b8iLiucEnLppUEP4Ck3YCH9A+/FBHnlqxnaEz7sxVvsevNsXtLbpoBSVsArwEe0D91CvC6iPhtuaqGowF91tNBGtBnm+DvNyTP58bP3snAuxw2Jq0gaXe69QvgK/0NMixw709nbwHv3hwreaa5433AFcD+/c/lwEJ/7dSGuz7r6SD463NO8P8bcC/gnf3PvfrnLGggwX8o3dG22wG3Bz4o6ZCyVQ2KdX9i7C3uvTlWb3E6NL4c7hoRj596/FpJZxarZnjc9blPB3HX55zgv3dE7D71+EuSnK4GuSf4nw3cNyKuhDUjzP4bOLxoVcPh3p/O3uLem6P0lrzS3PG/kvaZPJB0f7wSxO763KeDuOtzTvCv7oO4AEjake6bAhfcE/xi7fVa3T/ngnt/OnuLe2+O0luKFzASng8c3Z/9FfBrYMEgQWW463se8CFJ7+gf/xh4esF6hsZd3wuBYyStleAvWM+QvAQ4SdKFdJ+9uwAHlS1pUN4MnCpprQR/wXqG5kjgfyR9im79HgMcUbakQXHvT2dvce/NUXpLBgGnkLQ5QEQUv+vMLGhAn9V0kLk463NM8E+QdAvW1mZ1owXHBP80/ZXKyTd1X4mIM0rWMzQN9Kezt7j35ui8Ja80A5JuSzddYh8gJH2VbrrEr8pWNgwN6FtrOogkt+kg7vpukuCXZJHgl7Qx8Nf0nz3gK5L+fTIJxYQN6TYkge+NJEQXxnX6+tu+P529ZQrL3uwZnbfkmeaOjwK/AB4PPKH//WNFKxoWd33u00Hc9Tkn+N8P3IMunPOvwG5A1TcfmKaBBP/fAUcDt6HTeKSkV5etalCs+xNjb3HvzbF6Sx7PACR9KyLuNee5b0bE3qVqGpIG9J0ZEXss9lytNKDv23MS/PM+VyPO2gAknQXcbyrBvynw3xFxz7KVDYOk84A958xIPz0idi1b2TA00J+2+hrozVF6S15p7jhJ0pMlrdf/7A98tnRRA+Kuz306iLs+5wT/GZL+aPJA0n2BrxWsZ2jcE/yrgI2nHt8C+EGZUmaCe386e8sqvHtzlN6SV5oBSVcAm9KdCwpgfeDK/uWIiM1L1TYEDejbg+5rqrWmg0TEWUULG4gG9D2U7rjJWgn+iDipaGED0F8Nujvwo/6p7YDz6D+Lpa+aLBdJL6abxDOd4D8qIt5atLCBkPRp4N7AF+i88+HAV4GfA0TEC8pVt3wa6E9nb3HvzVF6S26aExsamA5iq881wS/pLgu9HhEXrVQts8I5wS9pwdGcEXH0StUyCxrpT1dvse5NGKe35PQMQJKApwI7RMTfS7ozcMeI+Ebh0gahAX3u00Hc9dkm+CPiov5ozU4RcaSk2wGbRcQPS9c2MJYJ/og4uj8rul1EfLd0PUPj3p/m3mLdm1OMylvyTHPHO4H7AQf0j38HvGPdb68Od33u00Hc9dkm+CW9BngZ8Ir+qY2AD5araFgaSPA/CjgT+M/+8R6Sji1b1XC49yfe3uLem6P0ljyeAUg6PSL2knRGROzZP2eRsIUm9LlPB3HX55xwPxPYky7VPvnsnVX7WdEJDST4v0V3c4WTp9bv7Ij4w7KVDUMD/ensLe69OUpvySvNHddJWp/u6xskbUX3dYAL7vrcp4O463NO8F8b3ZWJyWdv08L1DM0qvBP8189zEyGnK03u/ensLe69uYoRekteaQYkPZXufvR70X0d8ATg1RFxTNHCBqIBfe7TQdz12Sb4Jf1fYCe6ZPs/Ac8CPhwRhxctbCAaSPAfAZwIvJzueNQLgA0j4nlFCxuIBvrT2Vvce3OU3pKb5h5JuwAPpTtsfmJEnFe4pEFx15fUi3uCX9LDgX3pPnsnRMQXCpc0GO4Jfkm3BF5Ft34AJwD/4BAkm2Den7be4t6bY/WW3DQn1dPAdBBrfQDOCX53GknwJ5WS3lIvY/SWps80Szp9iPeMFXd9U7hPB7HW55jgl3T8EO8ZO64JfkmHDfGesdJQfzp6y2FDvGfsjNVbWp/TvKu6+5uvC9Hdha1W3PVNuO9kOghARPxG0kalixoQd32Po0/wA0TEJZI2K1vSstlnEYMX3fir2jkMuA9wMkBEnClph5IFDcRfSlroJkICnkynv0Za6U9Hb3HvzQmHMUJvaX3TvMsS3lPzferd9U1wnw7iru/aiAhJTgn+xyzhPdfOvIrZc31E/LY7QbQGhzN/7wEW21y9ZyUKmRGt9Kejt7j35oRRekvTm+aaQwBLwV3fFG+nuz/97SW9nn46SNmSBsVd38clvQu4taTn0CX4qzb9iDildA0rxDmSDgDWl7QTXYL/1MI1LZuIeG3pGmZJQ/3p6C3WvTnFKL0lg4CJBe7TQRrQZ5vgd8Y9wZ/UT3pLnYzVW3LTnCRJkiRJkiSL0Pr0jC2X8HPr0nX+vjSgz3o6SAP6mkjwO9JKgj+pk/SWehm7tzR9pVnS1cAldF/brIv1I2K7FSppUBrQ97/ABQu9Bdgi9Y0TSZcBX17oLcA9ImLHFSppMBZJt0On7dKI2Hkl6hkaSRcDb1noLcBzImIpYeTRscTRVr+OiGfOupZZ0EB/OnuLe2+O2luaDgIC50XEngu9YTLmq1Lc9blPB3HX55zg/4H5Z889wb8r8JcLvC7qnpXu3p/O3uLem6P2ltavNG+82KHypbxnrLjrS5KxImnHiLhwue9JyiBp/4j4+HLfM1ayP+vFvTfHTtOb5vmQtGVE/Lp0HbPCXV+SJEmSJMksaD0I+Oqp33eT9D3gW5JWSbpvwdIGwV1fktSIpLNL15D8/kh6d+kaZkn2Z7249+YYaPpKs6TTI2Kv/vfPAv8aEZ+XdB/grRHxx2UrXB4N6NtyCW+7ISIum3kxM8BdnzOS9lvXS8C/R8RWK1lPcvNY4LMn4NsRse1K1jM02Z/14t6bY6f1IOA0d4qIzwNExDckbVK6oIFx1HcJS5gOAlQ5XQJzfeYJ/o8BH2L+275uvMK1DI57gh/4BXARa3/2on98+yIVDYt7fzp7i3Vvjt1bWt8079gvkIBtJd0yIq7qX9uwYF1D4a7PfTqIuz7nBP9ZwL9ExDlzX5D0sAL1DI17gv9C4KER8aO5L0j6cYF6hsa9P529xb03R+0trW+a546lWR9A0h2Af1v5cgbHXd/9BnrPWHHX9/iB3jNGXgis62rX41aykBnxqog4ZaE3SHrtShUzA94K3Aa4ycYEeOMK1zIL3PvT2Vvce3PU3tL0mebED/fpIO76kiRJkmSstD49YwtJb5B0vqRf9T/n9c9Ve3vpCQ3os54O4q5vIWpP8EvaQNJfSfpPSWdJ+rakz0t6niSHo1HrxCXBL2kXSS+T9HZJb+t/37V0XUPQeH9W7S3g3ZsLMQZvafpKs6QTgC8BR0fET/vntgYOBB4WEQ8vWd9yaUCf+3QQd322CX5JHwEuA44GLu6f3pbus7dlRDypVG1D4J7gl/Qy4CnAR1l7/Z4MfDQi3lCqtiFooD+dvcW9N0ftLa1vmr8bEXe/ua/VQgP6pjeVZ0wHP+Y+rpEG9F3HuhP8T4iIxW6lOloW+ex9r9LU/hokrWbdCf5tImKjIoUNRP+tzj0i4ro5z28EfCcidipT2TA00J/O3uLem6P2ltaDgBdJeindldifwZqQ3DMBhxSquz736SDu+pwT/L+R9ETgExFxA4Ck9YAnAr8pWtkwuCf4bwDuRPcf72nu2L9WO+796ewt7r05am9pfdP8JODlwCmSJvMNfwYcC+xfrKrhcNfnPh3EXZ9zgv/JwD8D75T0G7o/fG5Nd1zqySULGwj3BP8LgRMlXcCNFxi2A+4GHFysquFw709nb3HvzVF7S9PHM5IkSWaNpNvSee0vS9eSLJ3+yut9gG3oNpUXA6dFxOqihQ1M9md9tNKbY6T1K803QdLxEfHI0nXMCid9krYAXgE8FpgEO34OfAZ4Q+23l25A3wbAs+mu/NyJ7tzaJXT6jph7Zq82JO1C923BNkBIugT4TEScX7ayYZirj27tjo2I84oWNhwx9XPD1D8tcO5Pd2+hsd5kRN7S9Mi5dbBN6QJmjJO+j9Odv3tQRNw2Im4LPLh/7piilQ2Du74PAHsAhwF/DvwF8Fpgd+CD5cpaPn3C/aN0V4G+AZzW//5RSS8vWdsQLKDvIyb69gUu4Ka9eUH/WtW49yfe3tJqb47CW/J4xhwkvS8inlW6jlnhpK+B6SAt66s6wd9Awt1d33nAn0XEqjnP7wB8LiKqnonbwPo5e0v2ZkHySnOPpE0k3d1lQzkXU30XSXppH4wDupBc/5dq8ZTtALjr+42kJ/bn84DurJ6kJ1F/gn+ScJ+LS8LdXd8G3DgDd5qf4DG5xn39nL0le7MgeaYZkPQo4F+AjYAdJO0BvC4iHl22smEw1uc+HcRdn3OC3z3h7q7vfcBpkj7KjfruTNeXRxSrajjc18/ZW7I3C5LHMwBJ3wIeApw8uWGEpLMi4p5lKxsGd31J/Tgm+N0T7g3o25Ubw0gTfcdGxLlFCxsI9/UqZ8EnAAAThElEQVSbYOot2ZuFyCvNHddHxG8lLf7OOnHXtwan6SDz4abPOcGPecIdc319Ur94Wn+GWK+fs7dkb5YjzzR3nCPpAGB9STtJOhw4tXRRA+Kubxqn6SDzYaPPOcHfQMLdWt9CSDqsdA3LxX39nL1lIbI3Z08ezwAk3RJ4FTBZkBOAf4iIq8tVNRzu+qZxmg4yH076xp6SXg4NJNyt9S2EpEdFxHGl61gO7uvn7C0Lkb05e/J4BhARV9FtKl9VupZZ4K4PuukgwHYuG8q5mOqbpKQvmvP8KFLSy8Q94e6ub53UvinpcV8/Z29ZJ9mbsyc3zetA0rsj4rml65gVTvqMp4MA1vpGnZJeJu4Jd2t98r+jnPX6Yewt2Ztlafp4hqQt1/US8O2I2HYl6xkad30T3KeDOOsbc0p6uTSQcLfVJ+kjwGXA0dx41Wtb4EBgy4h4UqnahsJ5/cDXW7I3y9L6leZf0H19Mz1WIvrHt5/336gLd30T3KeDOOsbbUp6ubgn3M317TXPHeUuBr7en5etHvP1A19vyd4sSOvTMy4EHhQRO0z97BgRO9DdRKJ23PVNcJ8OYqlv7CnpWeGQcF8IE33Od5RbEIf1M/eW7M2CtH6l+a3AbYAfzfPaG1e4llngrm/CIXQhx2uAD9NPByla0bC46nsb8LB1paSBqhP8C/Ct0gXMGAd9c+8oB90d5U6i/jvKLYbD+jl7S/ZmQZo+05wkSTn6kM6uEXH9nOc3As6NiLuVqSxJbsTxjnLutOIt2ZsrT+tXmhNTnKaDzIeJvlGnpJeDe8LdXd80EfGr0jUMTQPrZ+st02Rvrjx5pTmpFvfpIO76YNwp6eXgnnB31+dOC+vn6i3ujL03c9OcVIuk1ax7Osg2EbFRkcIGwl2fM5K+O0/CffLa9yJi55WuaUjc9bmT65eMlbH3ZuvTM5K6cZ8O4q5vnYwhJb1M3BPu7vrcaXb9DLzFnVH3Zm6aeySdvtDj2jHVN5kOMh8O00Hc9S1E8ZT0Mnky8ATgZ5K+189P/SmwHx4Jd3d9azD1zmbWbx5q95Y1ZG+uPHk8I0mSZIa4J9zd9bmT65eMlTH2Zm6aeyTdBdgpIr4oaRNgg4i4onRdQ+GuL6mPsaekkwTSO2ukFW/J3lx5ctMMSHoO8Fy6ZOZdJe0E/HtEPLRwaYPgri+pk7GnpJMkvbNOWvCW7M0y5Jzmjr8B7gP8D0BEXCDp9mVLGhR3fUmd7DVPSvpi4Ov9ObYkKU16Z5204C3ZmwXIIGDHNRFx7eRB/9WO0yV4d31JnYw6JZ0kpHfWSgvekr1ZgNw0d5wi6ZXAJpIeDhwDHFe4piFx1+eaIl6Dqb5Rp6SHwnTt1mCuL72zTlrwluzNAuSZZrq/QOlCA/vS3TjihIh4T9mqhsNdX1I/Y0xJJ0l6Z/24ekv2Zhly0wxIOjQi3rbYc7Xirg/8U8Tu+pxxXztnfemdyVjJ3ixDHs/oOHCe55650kXMEGt9fYr4P4B39U9tC3y6XEXD4q7PGfe1c9dHemcyXrI3C9D09AxJTwEOAHaQdOzUS5sBvypT1XC465vCPUXsrs8Z97Wz1JfemYyV7M2yNL1pBk4FLgVuB7x56vkrgLOKVDQs7vomXBMR10oCLFPE7vqccV87V33pnclYyd4sSNOb5oi4CLgIuF/pWmaBu74p5qaI/xqvFLG7PiSdHhF7retxxbivnaW+9E4f3Lwle7MsGQQEJP0RcDiwK7ARsD5wZURsXrSwgWhAn3WK2F2fM+5r14C+9M5klGRvFiIimv8BvgncDTiDrvEOAl5fuq7Ut2R9hy7luVp/3PX1eu4CPKz/fRNgs9I15dqlvvTO+n+MvSV7s8BPTs/oiYjvA+tHxOqIOBJ4cOmahsRcn3WKGHN9Y01JD4T12uGvL72zYsy9JXuzAE2faZ7iKkkbAWdKeiPdIftNC9c0JJb63FPE7vqmGGVKejm4r527vinSO+vGzlumyN4sQG6aO55ON7P6YOBFwJ2BxxetaFhc9bmniN31TRhlSnqZuK+du74J6Z114+gtE7I3C9B8EFDS+sDREfG00rXMAnd9Sf30V0kuA54BHEKXkj43Il5VtLCkadI768fVW7I3y9H8meaIWA1s1X/NYYe7PuhSxJJOk/Q7SddKWi3p8tJ1DYW7PuDlwC+As4G/Aj5X+3/UJrivnbO+9E4LLL0le7MceTyjYxXwtf78zJWTJyPiLcUqGpZVeOv7V+DJwDHA3nRXFe5WtKJhcdd3SES8DVgzTkjSof1zteO+du76VpHeWTPO3rKK7M0Vp/krzT2XAMfT/f+x2dSPC+763FPE7vpGmZIeCvO1c9eX3lk3zt6SvVmAvNIMRMRrF3pd0uERcchK1TM07vowTRFPYalv7CnpgbBcuyms9aV31kkL3pK9WYbmg4BLQZXfdnMxatcn6S7Az+juivQiYAvgnf1fqdXjqq/XtQPwT3RnDydcAZwVEdcXKWxAXNdugru+xUjvHCcteMtiZG/OqK7cNC9O7c23GDXrc08Ru+tzxn3t3PUthfTOZKxkb86GPNOcVI17ithdH4w3Jb1c3NfOXZ87Layfq7e4M+bezDPNS0OlC5gxtetbhXeKeBXe+kaZkh6IVXiv3Sq89S1Geue4cfaWxcjenAG5aV4aDuNpFqJ2fZf0P5MUsRvu+oiI70tav7/CcKSkU0vXNBDua+eubzHSO0eOsbcsRvbmDMgzzYCk47jprTV/C3wTeFdEXL3yVQ2Hu77FMEgRL0jt+iR9GXgY8F7gp3Qp6WdGxO5FC1sBal+7xahdX3pn9etn6y3Zm2V6M880d1wI/I5uAPp7gMvpUps7MzUUvWLc9S3G/UsXMGNq1/d0Oi86mO5ruDsDjy9a0cpR+9otRu360jvrxtlbsjcLkMczOvaMiAdMPT5O0pcj4gGSvlOsquFw15dUSp+Sfn2fkr4aWHD2aJKsMOmdldKAt2RvFiCvNHdsJWm7yYP+99v1D68tU9KguOtLKmXMKekkIb2zWhrwluzNAuSV5o7/A3xV0g/oEqc7AH8taVPg6KKVDYO7vsWoPUW8GLXrW8UIU9IrRO1rtxi160vvrJtV+HpL9mYBctMMRMTnJO0E7EK3EOdPHaJ/a7nKhsFd3xKoPUW8GLXrG2VKeoWofe0Wo2p96Z11rx/G3pK9WaY3c3pGj6Q/BrZn6g+JiHh/sYIGxlmfe4rYXd9i1Jzgd187d32Q3rnyVa0cNXsLZG+ufFW5aQZA0geAuwJnAqv7pyMiXlCuquFoQN/bgK2Aj/RPPYluvNAmwOYR8fRStQ2Bu77FqPx2sNZr14C+9E5jKveW7M0C5PGMjr2B3cL3Lwh3fe4pYnd9zrivnbu+9M5krGRvFiCnZ3ScA2xduogZ4q7PPUXsrs8Z97Vz15femYyV7M0C5JXmjtsB50r6BnDN5MmIeHS5kgbFXZ97ithd32LUnOB3Xzt3femd3tTsLdmbBcgzzYCkB873fEScstK1zAJ3fQCSbsH8KWIL3PUthKRnRsRRpev4fXFfO2d96Z3e1Owt2ZtlyE1zYoFzihi89Y01JT0UzmsH/vrccV4/d29xZ4y92fTxDElfjYh9JF3B2h8s0aVQNy9U2iC465uwrhQx4GL81vqAC7lpSvpnwM7Ae4BqE/zua+eqL72z7vWbws5bsjfL9mZeaU6qR9J5GKeIG9D35Tkp6TXPSfpORNyjVG3LpYG1s9bnjvv6OXuLO2PtzaavNE8jaX3gDqz9NcCPylU0LOb6JiniS0sXMiPc9W0labtJP44lJT0Q7mvnri+9s26cvSV7swC5aQYkHQK8hu5rmxv6pwO4Z7GiBsRdH/4pYnd9o0xJD4T72lnrS++sHltvyd4sQx7PACR9H7hvRPyqdC2zoAF91ilid30wzpT0ELivXQP60jsrx9hbsjcLkJtmQNJJwMMj4vrStcwCd31J/YwxJZ0k6Z314+ot2ZtlyOMZHRcCJ0v6LGt/DfCWciUNiqU+9xSxu74JY01JLwf3tXPXN0V6Z8U4essU2ZsFyE1zx4/6n436Hzcs9UXEPv0/Nytdyyxw1zfF3owwJb0c3NfOXd8U6Z11Y+ctU2RvFqD5TXOfPr1VRLykdC2zwF3fBPMUsbu+Uaakh8J87Wz1pXdaYOkt2ZvlaH7THBGrJe1Vuo5Z4a4P/FPE7voYaUp6CNzXzllfeqcFlt6SvVmODAICkt4M7AQcA1w5eT4iPlmsqAFpQJ97ithd3yhT0kPQwNq560vvrBhzb8neLEDzV5p7tgR+BTxk6rkALJoPf30/Bn5buogZYq3P4T9gC2C9dvjrS++sGHNvyd4sQF5pTqpH0hHA3QGrFPEEV31jT0kPgevaTXDX547r+rXgLe6MtTfzSjMgaWPg2cA9gI0nz0fEs4oVNSDu+jBNEU9hqW/sKemBsFy7Kaz1pXfWSQvekr1Zhtw0d3wAOB94BPA64KnAeUUrGhZbfe4pYnd9E8aYkl4u7mvnrq8nvbNyHL2lJ3uzAOuVLmAk3C0i/ha4MiKOBv4C+MPCNQ2Jrb6IWA3Ypojd9cGalPTPgC/QfRX3WeD4okUNgPvauevrSe+sGFdv6cneLEBeae64rv/nZZL+APgp3W03XXDXd6akYzFNEeOv71Dg7mNLSQ+E+9q560vvrBtnb8neLEBumjveLek2wN8CxwK3Av6ubEmD4q7PPUXsrm+UKemBcF87d33pnXXj7C3ZmwXI6RlJkhRlrCnpJEnqJr0lGZq80gxIugPwj8CdIuLPJO0G3C8ijihc2iA0oM86Reyuj5GmpIfAfe0a0JfeWTfO3pK9WYAMAnYcBZwA3Kl//D3ghcWqGZ6j8Nb3AWBruhTxKcC2wBVFKxoWW31TKenXzv0pXdtA2K5dj7u+o0jvrJIGvOUosjdXnNw0d9wuIj5Of3/ziLgeWF22pEFx12ebIu6x1TfmlPRA2K5dj7u+9M5KacBbsjcLkMczOq6UdFv6OwdJ+iO8wgPu+txTxO76RpmSHgj3tXPXl95ZN87ekr1ZgNw0d7yYLn16V0lfA7YCnlC2pEFx1+eeInbXN8qU9EC4r527vvTOunH2luzNAuT0jB5JG9ClbAV8NyKuW+RfqQp3fUmSJLMgvTMZK9mbK0/Tm2ZJ+y30eu1f4bjrm9BAithd3yhT0kPQwNpZ6kvvrHv9Jjh6S/Zm2d5sfdN85AIvR80fLPDXN0HS54EjgVdFxO79X99nRETx0MAQNKDvGOB84ADgdcBTgfMi4tCihQ1AA2tnqS+9s+71m+DoLdmbZXuz6U1z4oGk0yLi3pLOiIg9++fOjIg9Stc2BA3oOyMi9pR0VkTcU9KGwAkR8ZBF/+WR08DaWetzx339nL3FnbH2ZtMj5yQ9coj3jBV3fVO4p4jd9c1NSW/BCFLSA+G+dpb60jttsPOW7M2ytD49402SfkJ3iH5d/CNw/ArVMzTu+ia4p4jd9Y0yJT0Q7mvnqi+90wNHb8neLEjTxzMknUz/V8wC/DoiHr8C5QyOu75p3FPE7vqccV87R33pnclYyd4sS9Ob5qRu3FPE7vomjDUlvRzc185dnzutrJ+jt7gz9t5s/XhGUjePWuA1hwH27vomHEWfku4ffw/4GFDzf9jc185dnzutrN9R+HmLO6PuzbzSnCRJUcaakk6SpG7SW5KhaXp6RlI37ilid31TjDIlvRzc185dnzsNrZ+dt7gz9t7MK809kraOiJ+u63HtOOqTdB7d0PqFUsRHRcQ9V6ikQXHXN0HSXsDhwB8A59CnpCPirKKFLQP3tXPXN016Z704ess02ZsrT26aeyR9NiL+Yl2Pa8dRn3uK2F3fNGNMSS8H97Vz1zdNemfduHnLNNmbK09umpMkKcLYU9JJktRJeksyK5qeniFpY+B5wN2As4D3RcT1ZasaDnd9SfWMOiWdtEt6Z/XYekv2ZlmavtIs6WN0t9n8CvBnwEURcWjZqobDXV+SJMksSO9Mxkr2Zlla3zSfHRF/2P++AfCNiNircFmD4a4vqRtJj4yIBW/1upT3JMnQpHfWjbO3ZG+WpenjGXR/rQEQEddLC4U1q8Rd3xocU8TTmOp7k6SfsHBK+h+B6v7DNo3p2q3BVF96Z904e0v2ZsmaGr/SvBq4cvIQ2AS4qv89ImLzUrUNgbu+aRxTxNM46ht7SnooHNduGkd96Z3Vr9/JmHpL9mbZ3mx605wkSZIkSZIkS6H14xlJxbiniN31OeO+du763Mn1S8bK2HszrzQn1eKeInbX54z72rnrcyfXLxkrY+/N3DQn1eKeInbX54z72rnrcyfXLxkrY+/N9UoXkCTLYK0UcclCZoS7vjVI2nqhxxXivnbu+txpZv0MvcWdUfdmXmlOqsU9Reyub5oxpqSXg/vauetzp6X1c/MWd8bem7lpTpIkSZIkSZJFyOkZSZIUYewp6SRJ6iS9JZkVeaU5SZIijD0lnSRJnaS3JLMiN81JkhRh7CnpJEnqJL0lmRU5PSNJklKMOiWdJEm1pLckMyGvNCdJUoSxp6STJKmT9JZkVuSmOUmSJEmSJEkWIY9nJEmSJEmSJMki5KY5SZIkSZIkSRYhN81JkiRJkiRJsgi5aU6SJEmSJEmSRchNc5IkSZIkSZIsQm6akyRJkiRJkmQR/j/U1r34gtv0WQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 864x576 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_sweeper_df(df.mean(level=(1)), sort_by=\"ratio_correct\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/scrapbook.scrap.json+json": {
       "data": 36,
       "encoder": "json",
       "name": "nr_elements",
       "version": 1
      }
     },
     "metadata": {
      "scrapbook": {
       "data": true,
       "display": false,
       "name": "nr_elements"
      }
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "application/scrapbook.scrap.json+json": {
       "data": [
        0.7737173333333334,
        0.7588303333333334,
        0.8746886666666667,
        0.884166,
        0.751311,
        0.7390246666666668,
        0.8011303333333334,
        0.8469933333333334,
        0.35127933333333333,
        0.40660366666666664,
        0.36956799999999995,
        0.7014743333333334
       ],
       "encoder": "json",
       "name": "ranks",
       "version": 1
      }
     },
     "metadata": {
      "scrapbook": {
       "data": true,
       "display": false,
       "name": "ranks"
      }
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "application/scrapbook.scrap.json+json": {
       "data": 22.588943,
       "encoder": "json",
       "name": "max_duration",
       "version": 1
      }
     },
     "metadata": {
      "scrapbook": {
       "data": true,
       "display": false,
       "name": "max_duration"
      }
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "application/scrapbook.scrap.json+json": {
       "data": 6.870908,
       "encoder": "json",
       "name": "min_duration",
       "version": 1
      }
     },
     "metadata": {
      "scrapbook": {
       "data": true,
       "display": false,
       "name": "min_duration"
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Preserve some of the notebook outputs\n",
    "sb.glue(\"nr_elements\", len(df))\n",
    "sb.glue(\"ratio_correct\", list(df.mean(level=(1))[\"ratio_correct\"]))\n",
    "sb.glue(\"max_duration\", df.max().duration)\n",
    "sb.glue(\"min_duration\", df.min().duration)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python (cv)",
   "language": "python",
   "name": "cv"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
